如何干燥以下 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 代码:
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?('*')
我正在寻找极其优雅的红宝石一号班轮,但我很难找到它。不过,它可能应该有点可读性。
谢谢
我想这可能是你正在寻找的
x.split(/\^|\$|\*/)
你正在寻找这个正则表达式:
string.match(/^([^^$*]+)[$^*]?/).captures[0]
它返回第一次出现的所有字符$, ^, or *
,或者字符串的结尾。
这对我有用:
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