如何返回字符串的部分,直到" #"
或" Apt"
的第一個實例?返回字符串,直到Ruby中的匹配字符串爲止
我知道我可以根據"#"
或將字符串拆分成一個數組,然後調用.first
,但必須有一個更簡單的方法。
如何返回字符串的部分,直到" #"
或" Apt"
的第一個實例?返回字符串,直到Ruby中的匹配字符串爲止
我知道我可以根據"#"
或將字符串拆分成一個數組,然後調用.first
,但必須有一個更簡單的方法。
字符串拆分絕對更容易,更可讀的正則表達式。對於正則表達式,您需要一個捕獲組來獲得第一個匹配。它將與字符串拆分相同
string.split(/#|Apt/).first
因爲你只需要第一個結果,所以至少應該將'2'作爲第二個參數傳遞給'split'(意思是:最多分成兩部分)。否則,這可能需要做更多的工作。 –
我不使用Ruby來編寫所有的東西,但我敢肯定,你可以使用正則表達式沿
^.*(#|Apt)
行或者,如果你把字符串轉換成一個標記,你可以做那件事,但考慮到你正在尋找一個詞而不是一個單一的字符,它會變得更加困難。
使用方法String#[]。像這樣:
[
'#foo',
'foo#bar',
'fooAptbar',
'asdfApt'
].map { |str| str[/^(.*)(#|Apt)/, 1] } #=> ["", "foo", "foo", "asdf"]
我會寫一個方法來說清楚。像這樣的東西,例如:
class String
def substring_until(substring)
i = index(substring)
return self if i.nil?
i == 0 ? "" : self[0..(i - 1)]
end
end
爲什麼不是那麼簡單? –