2014-05-23 51 views
1

假設我有一個字符串"like_this_string",我想將它分爲兩​​部分:"like_this""string"。因此,我可以做到這一點檢索Ruby中的最後一部分字符串?

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

所以last部分總是最後"_"stringfirst部分總是最後"_"string。我寧願採用比字符串到數組的組合,獲得最後一個項目,然後重新加入數組(例如split,pop,join)更有效的方法。

回答

11

我不使用String#rpartition

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

國王的正則表達式.. :) –

+1

你的regexp看起來真的壓力'o_o' – Derek

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

(真的一樣使用rpartition,我知道......但是打樁的可能性是一個Ruby的傳統。)

1

只需指出一種方法:

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

first #=> "like_this" 
last #=> "string" 
相關問題