Подтвердить что ты не робот

Замените, (запятая) на. (Точка) и. (Точка) на, (запятая)

У меня есть строка как "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"

4b9b3361

Ответ 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 `.`