2012-01-24 30 views
3
var str = "1-2"; 
var arr = ["", "a", "b"]; 

我想用「a」替換1,用「b」替換2,這裏是我的代碼。但它沒有用,請幫我解決。

str = str.replace('(\d)-', arr["$1"]+"-"); 
str = str.replace('-(\d)', "-"+arr["$1"]); 

回答

7

可以使用匿名函數:

var arr = [ /* ... */ ]; 

str = str.replace(/\d/, function(match) { 
    return arr[match]; 
}); 

注意,這將只能更換一個occurence(評論者是快是我的編輯,你可能想使用g修飾符的正則表達式,從而重複替換,直到正則表達式不匹配)。

匿名函數的參數是完全匹配的字符串和捕獲組(如果有的話)。

+1

正則表達式應該是'/ \ d/g'更換兩個號碼。 –

+0

感謝@火箭,你比我編輯答案快... –

+0

是的,它的工作原理!感謝幫助! XD – Will

2
var str = "1-2"; 
var arr = ["", "a", "b"]; 
str = str.replace(/(\d)-/, function (mathchedText,$1,offset,str) { 
    return arr[$1] + "-" 
}); 

str = str.replace(/-(\d)/,function (mathchedText,$1,offset,str) { 
    return "-" + arr[$1] 
}); 

document.write(str); 

這裏的工作代碼: http://jsfiddle.net/HsQC7/

+0

問題解決了!哇,所有的論點都很清楚。謝謝! – Will