的Ruby/Rails - 从字符串中删除括号内的文字
如果返回下列方式数据:的Ruby/Rails - 从字符串中删除括号内的文字
- 黑客帝国(1999年)
- 肖申克的救赎(1994)
刚想知道是否有一种简单的方法可以从字符串中删除年份和括号,例如删除(1999)?
在此先感谢。
只要嵌套的括号是不是一个问题,你可以简单地使用正则表达式:
text.sub /\s*\(.+\)$/, ''
sub
取代一切由表达式与给定的匹配字符串,在这种情况下是一个空字符串(没有)。
-
\s*
包括开括号前的任何数目的空白字符 -
\(
开括号作为文字 -
.+
匹配的一个或多个的任意字符 -
\)
右括号作为文字 -
$
匹配字符串的结尾 - 可选,如果要删除字符串中任何位置的括号内的文字,可以将其忽略掉
只要确定:不需要使用'gsub'? – 2012-01-03 06:20:11
@Limbo'sub'将只执行一次替换,'gsub'将执行尽可能多的次数。除非你希望字符串末尾有多个加括号的部分,否则你不需要'gsub'。 – 2012-01-03 06:24:16
如果电影名称是“Pancakes(2000)”,那么你会处理诸如“Pancakes(2000)(2012)”这样的事情,并且你会斩断太多。 – 2012-01-03 06:35:17
试试这个:
text = "The Matrix (1999)"
text[0..(text.rindex("(") - 1)]
今年夏天发行我的“煎饼(2000)”电影时会发生什么?然后你会解析''Pancakes(2000)(2012)'' – 2012-01-03 06:26:49
Hi @ muistooshort,“煎饼(2000)”,将显示“煎饼”,但是你是对的,这只会对格式为text1(
['String#rindex'](http://ruby-doc.org/core-1.9.3/String.html#method-i -rindex) – 2012-01-03 08:02:19
你的意思是** The Matrix(1999)**作为输入并返回** 1999 **? – 2012-01-03 06:08:07
@LimboPeng Nope,我的意思是** The Matrix(1999)**作为输入并返回** ** Matrix ** – fuzz 2012-01-03 06:08:48
如果字符串全部采用“MovieName(Year)”的形式,则可以使用正则表达式。 – 2012-01-03 06:12:27