Wie ersetze ich Zeichenfolgen in JavaScript, um '9.61' in '9:61' zu konvertieren?


275

Angesichts der Codezeile

var value = $("#text").val();

und value = 9.61ich muss konvertieren 9.61zu 9:61. Wie kann ich hier die JavaScript-Ersetzungsfunktion verwenden?


29
Beachten Sie, dass dies nichts mit jQuery zu tun hat, sondern nur mit einfachem altem Javascript.
Ikke

1
Ich habe ein ähnliches Problem. Ich habe eine 'var'-Variable in Javascript und möchte die Zeichenfolge / Zeichen darin ersetzen. Ich habe diesen Code ausprobiert: var myObject = "my% dynamic% value \ n"; myObject = myObject.replace ("%", ""). replace ("\ n", ""); Auch versucht myObject = myObject.replace ('%', ''). Replace ('\ n', ''); Es gibt mir den Fehler, dass das Ersetzen keine bekannte Funktion ist
Balaji Birajdar

Die genaue Fehlermeldung für das oben genannte Problem lautet "Microsoft JScript-Laufzeitfehler: Objekt unterstützt Eigenschaft oder Methode 'Ersetzen' nicht"
Balaji Birajdar

Antworten:


539

Mach es so:

var value = $("#text").val(); // value = 9.61 use $("#text").text() if you are not on select box...
value = value.replace(".", ":"); // value = 9:61
// can then use it as
$("#anothertext").val(value);

Aktualisiert auf die aktuelle Version von jQuery. Und auch hier gibt es viele Antworten, die am besten zu jeder Situation passen. Als Entwickler müssen Sie wissen, welches welches ist.

Ersetzen Sie alle Vorkommen

Verwenden Sie Folgendes, um mehrere Zeichen gleichzeitig zu ersetzen : name.replace(/&/g, "-"). Hier ersetze ich alle &Zeichen durch -. gbedeutet "global"

Hinweis - Möglicherweise müssen Sie eckige Klammern hinzufügen, um einen Fehler zu vermeiden. -title.replace(/[+]/g, " ")

Credits Vissu und Dante Cullari


6
Ich habe versucht, aber ein Fehler tritt als Wert auf. Ersetzen ist keine Funktion :(
Nisanth Kumar

thephpdeveloper hat etwas hinzugefügt, um es richtig zu machen ... das sollte es tun ... siehe oben bearbeitet
Reigel

7
Dies funktioniert nicht, wenn wir versuchen, mehr als einen Wert gleichzeitig zu ersetzen. :(
Vissu

56
Verwenden Sie Folgendes, um mehrere Zeichen gleichzeitig zu ersetzen : name.replace(/&/g, "-"). Hier ersetze ich alle '&' Zeichen durch '-'. "g" bedeutet "global".
Vissu

9
Hinweis - Sie müssen möglicherweise eckige Klammern hinzufügen, um einen Fehler zu vermeiden -title.replace(/[+]/g, " ")
Dante Cullari

67

Die wahrscheinlich eleganteste Art, dies zu tun, besteht darin, es in einem Schritt zu tun. Siehe val().

$("#text").val(function(i, val) {
  return val.replace('.', ':');
});

verglichen mit:

var val = $("#text").val();
$("#text").val(val.replace('.', ':'));

Aus den Dokumenten:

.val( function(index, value) )

Funktion (Index, Wert) Eine Funktion, die den einzustellenden Wert zurückgibt.

Diese Methode wird normalerweise verwendet, um die Werte von Formularfeldern festzulegen. Für <select multiple="multiple"> Elemente können mehrere s ausgewählt werden, indem ein Array übergeben wird.

Die .val()Methode ermöglicht es uns, den Wert durch Übergabe einer Funktion festzulegen. Ab jQuery 1.4 werden der Funktion zwei Argumente übergeben, der Index des aktuellen Elements und sein aktueller Wert:

$('input:text.items').val(function(index, value) {
  return value + ' ' + this.className;
});

In diesem Beispiel wird die Zeichenfolge "Elemente" an die Werte der Texteingaben angehängt.

Dies erfordert jQuery 1.4+.


aber wie ich es sehe, will der Typ nur den var valueund nicht den Wert im Textfeld ändern, wie Sie vorgeschlagen haben ...
Reigel

41

Ich liebe die Verkettung von jQuery -Methoden. Einfach machen ...

    var value = $("#text").val().replace('.',':');

    //Or if you want to return the value:
    return $("#text").val().replace('.',':');

17
das hat eigentlich nichts mit jquery chaining zu tun. Nachdem Sie angerufen haben, ist .val()es eine reguläre Zeichenfolge.
Zerkms

19

Ein einfacher Einzeiler:

$("#text").val( $("#text").val().replace(".", ":") );

1
Dies wird nur funktionieren, wenn der Wert eine Zeichenfolge ist ... und auch $("#text")zweimal
Reigel

Das OP gab auch nicht an, dass er den Wert des $("#text"):)
Reigel

Kommentar 1 ... Falsch. Kommentar 2 ... denken Sie über die Logik seiner Frage nach, ohne dass Sie etwas angeben müssen.
VIDesignz

beweisen Sie es .. und erinnern Sie sich, datiertJan 27 '10 at 10:16
Reigel

Sie kennen nicht einmal gute Praktiken. Vielleicht möchten Sie dies lesen. stackoverflow.com/questions/3230727/…
Reigel

6

Dies kann mit der regulären JavaScript-Funktion erfolgen replace().

value.replace(".", ":");

3
Ich bin mir nicht sicher, ob ich etwas verpasst habe, aber da der Wert aus dem Textfeld stammt, ist es eine Zeichenfolge, nein? Beispiel jsfiddle.net/xMBuA
Anders

4

Sie können JavaScript-Funktionen wie Ersetzen verwenden und den jQuery-Code in Klammern setzen:

var value = ($("#text").val()).replace(".", ":");

3
$("#text").val(function(i,v) { 
   return v.replace(".", ":"); 
});

1
(9.61 + "").replace('.',':')

Oder wenn dein 9.61schon ein String ist:

"9.61".replace('.',':')
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.