2008-10-31 84 views
13

這是一個簡單的。我想用客戶端的另一個子字符串替換一個子字符串。Javascript - 如何替換子字符串?

原始的字符串是'original READ ONLY'

我想'READ ONLY''READ WRITE'

任何快速的答案,以取代嗎?可能帶有JavaScript代碼段...

+8

我不確定你是非常誠實的。這個問題可能是一個「毫不費腦」的問題,但是當一個人正在實現某些功能時,這是一件很重要的事情。特別是與字符串操作有關的事情。我覺得Stackoverflow最適合這樣的。所以請不要偏見。 – 2008-10-31 16:08:38

+0

您在問如何替換*定義的字符串*中的*定義的字*。我看不出任何依賴於實現的微妙之處,它只是簡單而且簡單。沒有冒犯,*問*這樣的問題沒有任何問題。 *對他們進行投票是錯誤的。 – Tomalak 2008-10-31 19:15:00

+2

您的投訴毫無根據。向上箭頭圖像上的「alt」文本顯示「這個問題很有用且清晰......」,這是一個主觀問題。現在,如果它說「托馬拉克大使這個問題是有用和明確的......」,那麼你的投訴可能有理由。 – 2010-07-23 08:00:52

回答

25

與string.replace()是正則表達式爲基礎;如果你傳入一個字符串作爲第一個參數,那麼由它產生的正則表達式將不包含'g'(全局)標誌。如果要替換搜索字符串的所有出現(通常是您想要的),則此選項非常重要。

簡單的全局字符串一個可選的非正則表達式替換的成語是:

function string_replace(haystack, find, sub) { 
    return haystack.split(find).join(sub); 
} 

,這是優選在「查找」字符串可能包含在正則表達式不需要的特殊含義的字符。

無論如何,無論哪種方法都適用於問題中的示例。

12

summary。它是基於正則表達式的,如果使用正則表達式符號,則可以指定i和g修飾符(不區分大小寫(i),無論大小寫還是全局(g),它都將匹配,這將取代所有的出現),如果使用字符串符號將被轉換爲正則表達式,並且您不會'指定任何修飾符。

<script type="text/javascript"> 

var str1="Visit Microsoft!"; 
var str2 = str1.replace(/microsoft/i, "W3Schools"); //Will work, per the i modifier 

var str3 = "original READ ONLY"; 
var str4 = str3.replace("ONLY", "WRITE"); //Will also work 

</script> 
+8

str2 = str2.replace(/^Visit /,'Do not visit'); – Gareth 2008-10-31 09:19:36

3
stringObject.replace(findstring,newstring) 
2

我更喜歡正則表達式的方法,

newstring = oldstring.replace(/ regexforstringtoreplace /, '新的字符串');

它也值得考慮g和i正則表達式修飾符,它們進行全局替換(即替換所有出現的)並使其不區分大小寫。

例如:

<script type="text/javascript"> 

var str = "this is a String"; 

document.write(str.replace(/\s/g, "_")); 

would print: this_is_a_string 

document.write(str.replace(/s/gi, "f")); 

would print "thif if a ftring" 

</script>