例えば:
"Angry Birds 2.4.1".split(" ", 2)
=> ["Angry", "Birds 2.4.1"]
文字列を次のように分割するにはどうすればよいですか。["Angry Birds", "2.4.1"]
例えば:
"Angry Birds 2.4.1".split(" ", 2)
=> ["Angry", "Birds 2.4.1"]
文字列を次のように分割するにはどうすればよいですか。["Angry Birds", "2.4.1"]
私はこのような解決策を持っています:
class String
def split_by_last(char=" ")
pos = self.rindex(char)
pos != nil ? [self[0...pos], self[pos+1..-1]] : [self]
end
end
"Angry Birds 2.4.1".split_by_last #=> ["Angry Birds", "2.4.1"]
"test".split_by_last #=> ["test"]
このようなものでしょうか?文字列の末尾まで、スペースの後にスペース以外のものが続く場所で分割します。
"Angry Birds 2.4.1".split(/ (?=\S+$)/)
#=> ["Angry Birds", "2.4.1"]
"Angry Birds 2.4.1".split(/ (?=\d+)/)
これはおそらく非常にトリッキーです (そしておそらく特に効率的ではありません) が、次のようにすることができます。
"Angry Birds 2.4.1".reverse.split(" ", 2).map(&:reverse).reverse
class String
def divide_into_two_from_end(separator = ' ')
self.split(separator)[-1].split().unshift(self.split(separator)[0..-2].join(separator))
end
end
"Angry Birds 2.4.1".divide_into_two_from_end(' ') #=> ["Angry Birds", "2.4.1"]