的Ruby/Rails - 从字符串中删除括号内的文字

的Ruby/Rails - 从字符串中删除括号内的文字

问题描述:

如果返回下列方式数据:的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

只要嵌套的括号是不是一个问题,你可以简单地使用正则表达式:

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

试试这个:

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