2011-05-09 38 views
1

我有一个包含以下字符串"XXXXyyyy!!!!zzzz"使用GSUB脱光多个字符

XXXX对象 - 从来没有相同的,都是会改变的,它可能是一个万个字的长
yyyy - 永远不会改变,确切的数字的字符
!!!! - 这是我想清除字符串后产生的数据。这个数据会改变的,以及
zzzz - 永远不会改变,确切的字符数所有的时间

,如果:

string = "XXXXyyyy!!!!zzzz" 
string.gsub("zzzz","") 
# => "XXXXyyyy!!!!" 

我能下一步要做得到公正"!!!!"。如何使用静态的'yyyy'来清除"XXXXyyyy"并仅保留"!!!!"。我希望这能解释我的问题。对不起,最后一个。

+0

请通过缩进这四个空格,或者通过选择它并按控制+ K高亮显示您的代码。 – 2011-05-09 04:15:38

回答

3

你应该做它一次:

string[/yyyy(.*)zzzz\z/, 1] 
+0

这个工程!谢谢! – user647345 2011-05-09 04:37:22

1

从你的第一次尝试,如果你把它改为:

string = "if(location.hostname.indexOf('edition.') > -1) {document.write('May 8, 2011 -- updated 1854 GMT (0254 HKT)');} else {document.write('May 8, 2011 2:54 p.m. EDT');}" 

string.gsub(/^.+else.+'(.+)'.+$/, $1) 

应该这样做。

+0

我认为他们正在寻找一个正则表达式。 – BlakeWilliams 2011-05-09 04:23:21

+0

我在控制台中做了这个,它返回:TypeError:无法将nil转换为(irb)中的字符串:8:在'gsub'中。 – user647345 2011-05-09 04:31:57

+0

我的不好。我在轨道控制台。试试这个:string.sub(/^.+ else。+'(。+)'。* $ /,$ 1) – seph 2011-05-09 04:41:01