2013-06-20 35 views
1

我讀過[這裏] [1]和[這裏] [2],但他們並沒有完全回答我的問題。地帶結束括號集從一個字符串

假設我有以下產品名稱&代碼:

Cool Product 9000 (CP9000)

我要脫掉最後空間,一切都只是會留下後:

Cool Product 9000

我將如何實現這一目標?

如果你知道一個引導或教程在那裏,會解釋這一點,隨意只是指向我吧。

編輯:我的道歉,如果我原來的問題是稍微不鮮明。我非常感謝所有的答案,我會在測試答案之前先測試一下,看看我最喜歡哪一個。

回答

2

同OMG的方法,但修改s本身:

s = 'Cool Product 9000 (CP9000)' 
s[s.rindex(' ')..-1] = '' 

s 
# => "Cool Product 9000" 
5

這應該這樣做:

string.sub!(/\s+\S*$/, '') 

但是,對於括號內的善良,你也可以這樣做:

string.sub!(/\s+\(.*?$/, '') 

,它會趕上(而不是趕上)由以下@Phrogz給出的例子:

foo bar baz 

將不會改變和

foo bar (bar baz) 

會變成

foo bar 
+1

的OP明確表示<<我要脫掉最後空間,一切都只是只剩下後>> – Massa

+0

'+ 1',因爲當OP已經提到他/她的要求時,我不想再猜測。 –

+0

我的錯誤,馬薩。+1 :)我被問題標題和樣本數據與該句子之間的差異所誤導。我刪除了我的詆譭(和不正確)評論。 – Phrogz

1
stripped = string.sub /\s*\([^)]+\)\z/, '' 

,上面寫着:

  • 尋找一些可選的空白\s*
  • ...後面文字左括號\(
  • ... FOL由是不是字面右括號[^)]+
  • 一個或多個字符lowed ......後跟文字右括號\)
  • ...後跟字符串\z

結束,並沒有取代它。

+0

使用ungreedy-qualifier,盧克! '/ \ s * \(。*?\)\ z /':D – Massa

+0

@Massa - 同樣的事情,但由於回溯而表現不佳。 – pguardiario

3
s = 'Cool Product 9000 (CP9000)' 
s[0...s.rindex(" ")] 
# => "Cool Product 9000"