2012-01-03 192 views
0

如果返回下列方式數據:的Ruby/Rails - 從字符串中刪除括號內的文字

  1. 黑客帝國(1999年)
  2. 肖申克的救贖(1994)

剛想知道是否有一種簡單的方法可以從字符串中刪除年份和括號,例如刪除(1999)?

在此先感謝。

+0

你的意思是** The Matrix(1999)**作爲輸入並返回** 1999 **? – 2012-01-03 06:08:07

+0

@LimboPeng Nope,我的意思是** The Matrix(1999)**作爲輸入並返回** ** Matrix ** – fuzz 2012-01-03 06:08:48

+0

如果字符串全部採用「MovieName(Year)」的形式,則可以使用正則表達式。 – 2012-01-03 06:12:27

回答

7

只要嵌套的括號是不是一個問題,你可以簡單地使用正則表達式:

text.sub /\s*\(.+\)$/, '' 

sub取代一切由表達式與給定的匹配字符串,在這種情況下是一個空字符串(沒有)。

  • \s*包括開括號前的任何數目的空白字符
  • \(開括號作爲文字
  • .+匹配的一個或多個的任意字符
  • \)右括號作爲文字
  • $匹配字符串的結尾 - 可選,如果要刪除字符串中任何位置的括號內的文字,可以將其忽略掉
+0

只要確定:不需要使用'gsub'? – 2012-01-03 06:20:11

+1

@Limbo'sub'將只執行一次替換,'gsub'將執行儘可能多的次數。除非你希望字符串末尾有多個加括號的部分,否則你不需要'gsub'。 – 2012-01-03 06:24:16

+0

如果電影名稱是「Pancakes(2000)」,那麼你會處理諸如「Pancakes(2000)(2012)」這樣的事情,並且你會斬斷太多。 – 2012-01-03 06:35:17

1

試試這個:

text = "The Matrix (1999)" 

text[0..(text.rindex("(") - 1)] 
+0

今年夏天發行我的「煎餅(2000)」電影時會發生什麼?然後你會解析''Pancakes(2000)(2012)'' – 2012-01-03 06:26:49

+1

Hi @ muistooshort,「煎餅(2000)」,將顯示「煎餅」,但是你是對的,這隻會對格式爲text1()將返回text1,這只是一個快速解決方案:D – sameera207 2012-01-03 07:32:45

+0

['String#rindex'](http://ruby-doc.org/core-1.9.3/String.html#method-i -rindex) – 2012-01-03 08:02:19