假设我有一个字符串"like_this_string"
,我想将其分为两部分:"like_this"
和"string"
。所以我可以这样做
first, last = "like_this_string".something
first == "like_this" # true
last == "string" # true
因此,last
部分始终是string
之后的"_"
,而first
部分始终是string
之前的"_"
split
}。我希望一种更有效的方法,比一个字符串到数组的组合,获取最后一项,然后重新加入数组(例如pop
,join
,{{1}})。
答案 0 :(得分:11)
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"