我的字符串为"1,23,45,448.00"
,我想用小数点替换所有逗号,用逗号替换所有小数点。
我要求的输出是" 1.23.45.448,00"
我已尝试将,
替换为.
,如下所示:
var mystring = "1,23,45,448.00"
alert(mystring.replace(/,/g , "."));
但是,在此之后,如果我尝试将.
替换为,
,它还会将第一个替换.
替换为,
,从而导致输出为{{1} }}
答案 0 :(得分:21)
将replace
与回调函数一起使用,将,
替换为.
,将.
替换为,
。函数返回的值将用于替换匹配的值。
var mystring = "1,23,45,448.00";
mystring = mystring.replace(/[,.]/g, function (m) {
// m is the match found in the string
// If `,` is matched return `.`, if `.` matched return `,`
return m === ',' ? '.' : ',';
});
//ES6
mystring = mystring.replace(/[,.]/g, m => (m === ',' ? '.' : ','))
console.log(mystring);
document.write(mystring);

正则表达式:正则表达式[,.]
将匹配逗号或小数点中的任何一个。
String#replace()
将获得匹配作为参数(m
),该参数可以是,
或.
,并且使用从函数返回的值替换比赛。
因此,当字符串中的第一个,
匹配时
m = ',';
在函数return m === ',' ? '.' : ',';
等同于
if (m === ',') {
return '.';
} else {
return ',';
}
所以,基本上这会将,
替换为.
,将.
替换为字符串中的,
。
答案 1 :(得分:5)
Tushar的做法没有错,但这是另一个想法:
myString
.replace(/,/g , "__COMMA__") // Replace `,` by some unique string
.replace(/\./g, ',') // Replace `.` by `,`
.replace(/__COMMA__/g, '.'); // Replace the string by `.`