Замените, (запятая) на. (Точка) и. (Точка) на, (запятая)
У меня есть строка как "1,23,45,448.00"
, и я хочу заменить все запятые на десятичную точку и все десятичные точки запятой.
Мой требуемый результат: "1.23.45.448,00"
Я попытался заменить ,
на .
следующим образом:
var mystring = "1,23,45,448.00"
alert(mystring.replace(/,/g , "."));
Но после этого, если я попытаюсь заменить .
на ,
, он также заменит первый замененный .
на ,
, в результате получим вывод как "1,23,45,448,00"
Ответы
Ответ 1
Используйте 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);
Ответ 2
Ничего плохого в подходах Тушара, но здесь другая идея:
myString
.replace(/,/g , "__COMMA__") // Replace `,` by some unique string
.replace(/\./g, ',') // Replace `.` by `,`
.replace(/__COMMA__/g, '.'); // Replace the string by `.`