Rails按最后分隔符分割

时间:2013-03-07 10:53:09

标签: ruby-on-rails ruby regex split delimiter

我希望能够将字符串拆分为2个元素,因为每个字符串至少包含一个分隔符。

示例:"hello_world"。如果我申请.split("_"),我会收到:["hello", "world"]

当我有一个包含两个或更多分隔符的字符串时会出现问题。示例"hello_to_you"。 我想收到:["hello_to", "you"]

我知道split函数的限制选项:.split("_", 2),但它产生:["hello", "to_you"]

所以,基本上,我需要将整个字符串与最后一个分隔符(“_”)分开。

3 个答案:

答案 0 :(得分:6)

这正是String#rpartition的作用:

first_part, _, last_part = 'hello_to_you'.rpartition('_')
first_part # => 'hello_to'
last_part # => 'you'

答案 1 :(得分:2)

'hello_to_you'.split /\_(?=[^_]*$)/

答案 2 :(得分:2)

class String
  def split_by_last_occurrance(char=" ")
    loc = self.rindex(char)
    loc != nil ? [self[0...loc], self[loc+1..-1]] : [self]
  end
end

"test by last_occurrance".split_by_last  #=> ["test by", "last"]
"test".split_by_last_occurrance               #=> ["test"]