2010-12-20 52 views
21

我想這是一個簡單的問題如何在使用Ruby的字符串中的某個字符後刪除子字符串?

我該怎麼做?

+1

嗯,我相信標題不言自明。另外,約13個小時前我接受了雅各布的回答,給他人一些時間;通常人們不會刷新同一頁面並等待答案。 – JayX 2010-12-20 17:26:06

+1

編輯標題不是爲了讓您受益。這有利於其他正在尋找相同問題的答案的人。沒有澄清你的頭銜和問題實際上會傷害你,因爲沒有人會認爲你的問題沒有用。只是我的兩分錢。 – DJTripleThreat 2010-12-21 00:57:04

+1

這個問題並沒有解釋子字符串有多長,所以它確實是模糊的。顯然你希望子字符串在特定字符的第一個實例一直延伸到主字符串結尾後立即啓動。不要指望我們去閱讀思想。另一個傳感器可能會問你同樣的問題,但要求不同的答案,因爲她只想刪除長度爲1的子字符串。 – 2014-09-26 04:55:25

回答

31
new_str = str.slice(0..(str.index('blah'))) 

alt text

+3

str.slice(/.* r /) – eMgz 2012-12-11 18:13:45

+1

如果你想到達delimeter的末尾:'new_str = str.slice(0 ..(str.index('blah')+'blah'.length) )' – mvndaai 2014-11-05 00:45:27

+3

如果在字符串中找不到給定字符,會發生什麼情況? – 2014-11-11 15:11:35

4
str = "Hello World" 
stopchar = 'W' 
str.sub /#{stopchar}.+/, stopchar 
#=> "Hello W" 
+0

他們都工作,謝謝! – JayX 2010-12-20 04:00:42

23

我發現"Part1?Part2".split('?')[0]更容易閱讀。

+3

但是你必須重新加入?如果你想要它,所以我不認爲你的確切問題的答案。 – Ivan 2012-01-03 22:22:10

+0

我喜歡這個答案,因爲你不必檢查「?」是否存在,它也可以與任何其他字符串一起使用,而不引發異常。 – 2017-09-22 15:21:45

7

我很驚訝沒有人建議用

irb> "truncate".gsub(/a.*/, 'a') 
=> "trunca" 

GSUB的爆炸版本可以用來修改字符串「GSUB」。

+1

你不是指'/(?<= a)。* /'或'/ a \ K。* /',從匹配中排除''a「嗎? – 2016-11-03 19:03:14

+0

@CarySwoveland是對的,或者重新介紹char。很好的接收。 – philant 2016-11-04 09:37:06

相關問題