我怎样才能擦干这个Ruby代码
如何干燥以下Ruby代码:我怎样才能擦干这个Ruby代码,ruby,refactoring,dry,Ruby,Refactoring,Dry,如何干燥以下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?('*') 我正在寻找非常优雅的ruby one liner,但我很难找到它。 不过,它应该有点可读性 谢谢我想这可能就是你想要的 x、 拆
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?('*')
我正在寻找非常优雅的ruby one liner,但我很难找到它。
不过,它应该有点可读性
谢谢我想这可能就是你想要的
x、 拆分(/\^\$\\*/)
这对我很有用:
x = "a random string to be formatted"
['^', '$', '*'].each { |token|
x = x.split(token)[0] if x.include?(token)
}
基于您提供的代码
x = 'a random string to be formated'
%w(^ $ *).each do |symbol|
x = x.split(symbol)[0] if x.include?(symbol)
end
您正在查找此正则表达式:
string.match(/^([^^$*]+)[$^*]?/).captures[0]
它返回所有字符,直到
$、^或*
的第一次出现,或字符串的结尾。x.split(Regexp.union'^','$','*')
是一样的,但看起来不那么可怕(union方法负责转义)。这就是我一直在寻找的,我也喜欢union方法steenslag,谢谢