2012-12-04 78 views
1

我需要替換字符串中的多個字符。 我有一個線 - 「123AB替換字符串中的某些字符JavaScript

我需要更換%D1,和%D2

我該怎麼做?可以用完成,取而代之的是,如果是這樣,怎麼辦?

+0

是的,這是可以做到與'String.replace'。閱讀API文檔。 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace –

+0

爲什麼%D1和%D2? – nhahtdh

+0

@Esailija謝謝!這行得通! –

回答

-1

這種替換所有occurencies

var rep = function (s, search, replacement) { 
    while(s.indexOf(search) >= 0) 
     s = s.replace(search, replacement); 
    return s; 
} 
var s = rep("123AB", "A", "%D1"); 
+1

是的,它的工作原理,但你重複的工作,替換'可以爲你做 –

+0

如果全球替換是必要的,你可以剛剛完成全局替換...'s.replace(/ A/g,「%D1」)' – Esailija

+0

@IlyaKharlamov這是所有可用的最差的答案 –

0

這應該工作.. str.replace("A",D1)

2

它很簡單,第一個參數是要替換什麼,第二個參數 是你要替換它的內容:

var str = "123AB"; 
str = str.replace("A", "%D1").replace("B", "%D2"); 
//str is now "123%D1%D2" 
+0

當你有多個「A」代碼不起作用 – thiagoh

+1

是的,它代替* a和* the * b作爲操作請求:I – Esailija

+0

@Esailija它只適用於OP請求的輸入,而不是有多個As或Bs。 ''123ABABAB「.replace(」A「,」%D1「).replace(」B「,」%D2「);'outputs'」123%D1%D2ABAB「'你需要正則表達式使其成爲一個全局替換 –

5

String.replace很簡單

"ABCDEFA".replace(/A/g, "a") // outputs "aBCDEFa" 
"ABCDEFB".replace(/B/g, "b") // outputs "AbCDEFb" 

所以,你可以使用

"123AB".replace(/A/g, "%D1").replace(/B/g, "%D2"); 

但是,你可以通過一個替代函數,而不是字符串做一個傳球替換

"123AB".replace(/A|B/g, function(match) { 
    var repacements = {A: '%D1', B: '%D2'}; 
    return replacements[match]; 
}) 
+0

@downvoter一個解釋會很好 –

+0

@Jaun Mendes,我敢打賭這是嫉妒; D來自Downvoter – ShrekOverflow