2012-11-05 28 views
0

從來就從.getAttribute()得到以下字符串:

ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName 

Let's稱之爲 「字符串」。現在我需要將$替換爲_。我試過了:

String.replace(/\$/g, "\_"); 

...沒有用。

第二個嘗試:

String.replace(/$$/g, "\_"); 

... doesn't工作。

第三次嘗試:

String.replace(/\$$/g, "\_"); 

... doesn't工作。

所以...任何人都可以幫忙嗎?感謝所有的努力!

編輯:需要得到它的IE8/9

此時的代碼工作:

mailName = document.body.innerHTML.match(/ctl00\$.+EmailAddress/); 
alert(mailName); // String is "ctl00$m$g_ff7ec6ac_ec2e_4402_aaaa_7fcce245ff1b$ctl03$_UserName" 

mailName2 = mailName.replace(/\$/g, "_"); 

EDIT2:

... I'va得到的回答一個我自己。

mailName = document.body.innerHTML.match(/ctl00\$.+EmailAddress/); 

給出了一個字符串,但.replace()或.split()不能使用它。爲了得到工作,你需要這樣做

mailID = '"' + document.body.innerHTML.match(/ctl00\$.+EmailAddress/) + '"'; 

之後,一切都很好。不知道爲什麼,但在IE8/9中這個解決方案效果很好。

+1

什麼是 「不工作」 是什麼意思? –

+3

不把它叫做'String',''String'是一個類。 –

+1

''hello $ world「.replace(/ \ $/g,」\ _「)'對我很好,儘管你不需要下劃線之前的反斜槓。 – Pointy

回答

6

使用

yourString = yourString.replace(/\$/g, "_"); 

無需逃避第二個字符串。

the MDN

返回與一些或 替換替換模式的所有匹配一個新的字符串。該模式可以是字符串或RegExp,並且替換可以是爲每個匹配調用的字符串或函數。

還請注意,替換不會更改原始字符串。你需要找回返回的值。

而且,關於你的編輯,請注意match function of Internet Explorer似乎即使沒有g修改返回數組:

如果匹配方法沒有找到匹配,返回null。如果 找到匹配項,則匹配返回一個數組,並更新全局RegExp對象的屬性以反映匹配結果。

你可以做

var str = ''+ document.body.innerHTML.match(/ctl00\$.+EmailAddress/); 

Demonstration

+0

這是真的,雖然在下劃線之前加一個反斜槓並不會真的傷害任何東西。 – Pointy

+0

對不起... Dons't工作。它可能適用於FF,但我需要爲它工作IE8/9 –

+0

@FelixZeidler你還有一個問題。檢查編輯的答案。 –