1

如何干燥以下 Ruby 代码:

    x = 'a random string to be formated'
    x = x.split('^')[0] if x.include?('^')
    x = x.split('$')[0] if x.include?('$')
    x = x.split('*')[0] if x.include?('*')

我正在寻找极其优雅的红宝石一号班轮,但我很难找到它。不过,它可能应该有点可读性。

谢谢

4

4 回答 4

2

我想这可能是你正在寻找的

x.split(/\^|\$|\*/)

于 2013-03-26T22:21:43.657 回答
0

你正在寻找这个正则表达式:

string.match(/^([^^$*]+)[$^*]?/).captures[0]

它返回第一次出现的所有字符$, ^, or *,或者字符串的结尾。

于 2013-03-26T22:23:15.267 回答
0

这对我有用:

x = "a random string to be formatted"
['^', '$', '*'].each { |token|
  x = x.split(token)[0] if x.include?(token)
}
于 2013-03-26T22:22:09.837 回答
0

根据您提供的代码

x = 'a random string to be formated'

%w(^ $ *).each do |symbol|
  x = x.split(symbol)[0] if x.include?(symbol)
end
于 2013-03-26T22:23:06.407 回答