Zamień (przecinek) na. (Kropka) i (kropka) na, (przecinek)


Mam ciąg o nazwie "1,23,45,448,00" i chcę zastąpić wszystkie przecinki z punktem dziesiętnym, a wszystkie punkty dziesiętne.
Wymagane wyjście to „1.23.45.448,00”
Próbowałem zamienić
,
na
.
w ten sposób:
var mystring = "1,23,45,448.00"
alert(mystring.replace(/,/g , "."));

Ale potem, jeśli spróbuję zamienić
.
na
,
, zastąpi on również pierwszy zastąpiony
.
na
,
, co da wynik jako
"1,23,45,448,00"
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj
replace
z funkcją zwrotną, która zamieni
,
na
.
i
.
na
,
. Wartość zwrócona przez funkcję zostanie użyta do zastąpienia pasującej wartości.
<div class="snippet-code">
<div class="snippet" data-babel="false" data-console="false" data-hide="false" data-lang="js">
<pre class="snippet-code-js lang-js prettyprint-override">
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);


Regex:

regex
[,.]
dopasuje dowolny przecinek lub przecinek.
String#replace()
https://developer.mozilla.org/ ... place
używając wywołania zwrotnego, funkcja pobierze dopasowanie jako parametr (
m
), którym jest
,
lub
.
, a wartość zwrócona funkcja służy do zastępowania dopasowania.
Więc kiedy pierwszy
,
z ciągu zostanie dopasowany
m = ',';

A w funkcji
zwraca m === ','? '.' : ',';
odpowiednik
if (m === ',') {
return '.';
} else {
return ',';
}

Więc zasadniczo zastępuje
,
na
.
i
.
na
,
w ciągu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W podejściu Tuskar nie ma nic złego, ale oto kolejny pomysł:
myString
.replace(/,/g , "__COMMA__")// Replace `,` by some unique string
.replace(/\./g, ',')// Replace `.` by `,`
.replace(/__COMMA__/g, '.');// Replace the string by `.`

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się