2012-12-14 48 views
1

考慮下面串獲取2箇中給出的符號之間的文本字符串中的

str = "hellow >world<"

是有可能對我以汽提出其中>< 使用任何內置功能之間發生文本?或者我必須編寫自定義函數來實現這一目標?

+0

這是對堆棧溢出習慣,以顯示你的工作。我們想知道您在尋求幫助之前實際上已經嘗試解決問題。 –

+0

好的。我將來會在我的問題中提供有關我的試用信息。 – Alan

回答

4

鑑於你很簡單的例子,下面將返回"world"

str.match(/>(.+)</)[1] 
1

您可以使用匹配方法和正則表達式,例如

str.match(/\>(\w+)\</)[1] 
+0

你唯一的問題*(不是我的完美)*它不符合非單詞字符(即''hellow> world-test <「') – deefour

+0

我知道:)。我只是試圖展示'.match'和正則表達式。就個人而言,我不喜歡'。+'。我寧願'[a-zA-Z0-9 ...]'。 – Bjoernsen

1

您可以用分割做到這一點:

str.split(/[<>]/)[1] 
+0

什麼是更快? '.match'還是'.split'的方式? (如果字符串較長) – Bjoernsen

+0

不確定!正則表達式肯定更加靈活,但我想我會提供拆分解決方案作爲替代方案。可以以速度爲基準。 –

+1

事實上,這是不正確的,如果這應該重要。正則表達式特別尋找由'>'和'<'所包圍的字符,而這將在所有'<' or '>'上分割,這可能會很好,或者不是:) – nathanvda

1

如果你想之間保持只有一行字符號:

str.scan(/>(.*?)</).flatten 

與此處的其他解決方案不同,這處理您要提取多個單詞的情況。

如果你想的話,並保持休息:

str.gsub(/>.*?</,"") 
相關問題