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?

Nisanth Kumar
quelle
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

Reigel
quelle
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+.

Cletus
quelle
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('.',':');
Shadrack B. Orina
quelle
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(".", ":") );
VIDesignz
quelle
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(".", ":");
Anders
quelle
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(".", ":");
kravits88
quelle
3
$("#text").val(function(i,v) { 
   return v.replace(".", ":"); 
});
andlrc
quelle
1
(9.61 + "").replace('.',':')

Oder wenn dein 9.61schon ein String ist:

"9.61".replace('.',':')
DU
quelle