2011-03-14 103 views
3

我有一個3美元符號的字符串,例如$$$Test123。我想在div中顯示這個字符串。 的問題是,當我使用replace我得到$$Test123 - 2美元符號,而不是3replaceAll在JavaScript和美元符號

例如:

var sHtml="<_content_>"; 
var s="$$$Test"; 
sHtml= sHtml.replace("<_content_>", s); 

現在的sHtml結果是$$Test;

任何想法如何解決?

回答

8

javascript沒有默認的全部替換函數。你可以寫自己喜歡這個

 


function replaceAll(txt, replace, with_this) { 
    return txt.replace(new RegExp(replace, 'g'),with_this); 

} 
 
+1

這是'replaceAll'方法的一個過度簡化的例子 - 任何在正則表達式中具有特殊功能的符號都需要被轉義,否則就會遇到某些字符串的問題。 – 2011-03-14 18:16:43

1

行情是你的朋友

var sHtml="<_content_>" 
var s="$$$Test"; 
sHtml= sHtml.replace("<_content_>", s); 
3

$有特殊的意義列入到replace()呼叫的第二個參數字符串時。通常情況下,您會使用它來引用原始字符串中的匹配表達式。例如:

"foo foooo".replace(/fo+/g, "$&bar"); 
//-> "foobar foooobar" 

在上面的例子,指的是$&回整個匹配,這是在第一個字foo並且在第二foooo

您的問題源於$的特殊含義。爲了在比賽中使用文字$,您必須鏈接在一起,以便第一個跳出第二個。有3個文字$符號,則必須鏈條6在一起,就像這樣:

var sHtml="<_content_>"; 
var s="$$$$$$Test"; 
sHtml= sHtml.replace("<_content_>", s); 
//-> "$$$Test" 
0

試試這個的replaceAll功能:

http://www.dumpsite.com/replaceAll.php

它執行全部更換使用JavaScript通過定期更換功能表達速度,同時消除了在搜索或替換字符串中無意中出現正則表達式特殊字符時出現的副作用。

使用此功能,您不必擔心轉義特殊字符。在執行replaceAll之前,所有特殊字符都會預先轉義。

此功能將產生您所期望的輸出。

試一試,並提供您的反饋。

+0

這個問題很古老,所以很可能請求者找到了解決這個問題的方法。 – GargantuChet 2012-11-15 14:51:35