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

これは私のために働きます:

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 に答える
0

この正規表現を探しています:

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

、の最初の機会$, ^, or *、または文字列の最後までのすべての文字を返します。

于 2013-03-26T22:23:15.267 に答える