在Ruby中检索字符串的最后一部分?

时间:2014-05-23 17:15:15

标签: ruby string

假设我有一个字符串"like_this_string",我想将其分为两部分:"like_this""string"。所以我可以这样做

first, last = "like_this_string".something
first == "like_this" # true
last == "string" # true

因此,last部分始终是string之后的"_",而first部分始终是string之前的"_" split }。我希望一种更有效的方法,比一个字符串到数组的组合,获取最后一项,然后重新加入数组(例如popjoin,{{1}})。

4 个答案:

答案 0 :(得分:11)

我会使用String#rpartition

first, _, last = "like_this_string".rpartition("_")
first # => "like_this"
last # => "string"

答案 1 :(得分:2)

((first, last)) = "like_this_string".scan(/(.*)_(.*)/)
first # => "like_this"
last  # => "string"

答案 2 :(得分:2)

first, last = s[0..(ix=s.rindex("_"))-1], s[ix+1..-1]

(真的和使用rpartition一样,我知道......但是,对可能性的追求是Ruby的传统。)

答案 3 :(得分:1)

再说一点:

*first, last = "like_this_string".split('_')
first = first.join('_')

first #=> "like_this"
last  #=> "string"