2011-05-09 39 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