wie man "," aus einem String in Javascript entfernt

71

Original String ist, "a,d,k" ich möchte alle entfernen ,und es zu machen "adk".

Ich habe den folgenden Code ausprobiert, aber er funktioniert nicht.

"a,d,k".replace(/,/,"")
Jiaoziren
quelle
1
"Funktioniert nicht"? Bitte erläutern Sie. Was "funktioniert nicht" daran?
Rob
2
Ich habe nach den gleichen Fragen gesucht. Danke, dass du mir Zeit gespart hast
Krishna

Antworten:

121

Sie weisen das Ergebnis der Ersetzungsmethode nicht wieder Ihrer Variablen zu. Wenn Sie replace aufrufen, wird eine neue Zeichenfolge zurückgegeben, ohne die alte zu ändern.

Laden Sie dies beispielsweise in Ihren bevorzugten Browser:

<html><head></head><body>
    <script type="text/javascript">
        var str1 = "a,d,k";
        str1.replace(/\,/g,"");
        var str2 = str1.replace(/\,/g,"");
        alert (str1);
        alert (str2);
    </script>
</body></html>

In diesem Fall str1wird "a,d,k"und str2bleibt "adk".

Wenn Sie sich ändern möchten str1, sollten Sie Folgendes tun:

var str1 = "a,d,k";
str1 = str1.replace (/,/g, "");
Bob
quelle
3
+1, aber du kannst einfach var str2 machen; str2 = str.replace (...). Ich habe die Antwort erweitert, um sie (hoffentlich) zu verbessern.
Paxdiablo
36
Wenn Sie es ohne Regex tun möchtenstr.split(",").join("")
Lime
@Lime Vielen Dank, es ist sehr hilfreich! +1
Ishikawa Yoshi
40

Verwenden Sie String.replace()z

var str = "a,d,k";
str = str.replace( /,/g, "" );

Beachten Sie das g(globale) Flag im regulären Ausdruck, das allen Instanzen von "," entspricht.

rauben
quelle
5

Wenn Sie mehr als ein Zeichen löschen möchten, sagen Sie Komma und Punkte, die Sie schreiben können

<script type="text/javascript">
  var mystring = "It,is,a,test.string,of.mine" 
  mystring = mystring.replace(/[,.]/g , ''); 
  alert( mystring);
</script>
Jeff_Alieffson
quelle
Perfekt, danke +1.
Ajoy Karmakar
4

Sie können etwas versuchen wie:

var str = "a,d,k";
str.replace(/,/g, "");
Paulo Santos
quelle
-2

<script type="text/javascript">var s = '/Controller/Action#11112';if(typeof s == 'string' && /\?*/.test(s)){s = s.replace(/\#.*/gi,'');}document.write(s);</script>

Es ist eine häufigere Antwort. Und kann mit verwendet werdens= document.location.href;

Slava Jinjikhashvilli
quelle
-3

Wenn Sie eine Nummer größer als 999.999,00 benötigen, haben Sie ein Problem.
Diese sind nur für Zahlen unter 1 Million, 1.000.000 gut.
Sie entfernen nur 1 oder 2 Kommas.

Hier das Skript, das bis zu 12 Kommas entfernen kann:

function uncomma(x) {
  var string1 = x;
  for (y = 0; y < 12; y++) {
    string1 = string1.replace(/\,/g, '');
  }
  return string1;
}

Ändern Sie diese for-Schleife, wenn Sie größere Zahlen benötigen.

Alex
quelle
2
Das gin Ihrer Regex bedeutet global und entfernt beim ersten Durchgang alle Kommas aus der Zeichenfolge. Die anderen 11 Schleifen tun nichts. Außerdem müssen Sie dem Komma im Literal nicht entkommen. Ich würde raten, nicht so feindselig und kritisch gegenüber den Antworten anderer zu sein.
JaredMcAteer
Seltsam, dass es bei mir mit 11 Loops funktioniert und nicht mit 1 Pass.
Alex
Ich war auch nicht "feindlich" oder "kritisch". Nur zu informieren, dass das obige Beispiel fehlerhaft ist und nicht für Zahlen größer als 1 Million funktioniert. Ich brauchte den Code, testete ihn, er schlug fehl und ich habe meine Lösung veröffentlicht, die nur mit 11 Schleifen funktionierte und mit 1 nicht funktionierte. Können Sie mir sagen, warum das so ist? Es widerspricht dem, was du sagst. Ich bin mir also nicht sicher.
Alex