2011-09-23 37 views

回答

21

字符串拆分絕對更容易,更可讀的正則表達式。對於正則表達式,您需要一個捕獲組來獲得第一個匹配。它將與字符串拆分相同

string.split(/#|Apt/).first 
+3

因爲你只需要第一個結果,所以至少應該將'2'作爲第二個參數傳遞給'split'(意思是:最多分成兩部分)。否則,這可能需要做更多的工作。 –

1

我不使用Ruby來編寫所有的東西,但我敢肯定,你可以使用正則表達式沿

^.*(#|Apt) 

行或者,如果你把字符串轉換成一個標記,你可以做那件事,但考慮到你正在尋找一個詞而不是一個單一的字符,它會變得更加困難。

2

使用方法String#[]。像這樣:

[ 
    '#foo', 
    'foo#bar', 
    'fooAptbar', 
    'asdfApt' 
].map { |str| str[/^(.*)(#|Apt)/, 1] } #=> ["", "foo", "foo", "asdf"] 
3

我會寫一個方法來說清楚。像這樣的東西,例如:

class String 
    def substring_until(substring) 
     i = index(substring) 
     return self if i.nil? 
     i == 0 ? "" : self[0..(i - 1)] 
    end 
end