Come faccio a sostituire la stringa in JavaScript per convertire '9.61' in '9:61'?


275

Data la riga di codice

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

e value = 9.61, devo convertirlo 9.61in 9:61. Come posso utilizzare la funzione di sostituzione JavaScript qui?


29
Nota che questo non ha nulla a che fare con jQuery, ma solo con il semplice javascript precedente.
Ikke,

1
Ho un problema simile. Ho una variabile 'var' in javascript e voglio sostituire la stringa / caratteri in essa. Ho provato questo codice: var myObject = "my% dynamic% value \ n"; myObject = myObject.replace ( "%", "") sostituire. ( "\ n", ""); Ho anche provato myObject = myObject.replace ('%', ''). Replace ('\ n', ''); Mi dà l'errore che sostituire non è una funzione nota
Balaji Birajdar,

Il messaggio di errore esatto per il problema precedente è "Errore di runtime di Microsoft JScript: l'oggetto non supporta la proprietà o il metodo 'sostituisci'"
Balaji Birajdar,

Risposte:


539

Fai cosi:

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);

Aggiornato per riflettere la versione corrente di jQuery. E ci sono anche molte risposte qui che si adatterebbero meglio a qualsiasi situazione del genere. Come sviluppatore, devi sapere quale è quale.

Sostituisci tutte le occorrenze

Per sostituire più caratteri alla volta usare qualche cosa come questa: name.replace(/&/g, "-"). Qui sto sostituendo tutti i &caratteri con -. gsignifica "globale"

Nota : potrebbe essere necessario aggiungere parentesi quadre per evitare un errore -title.replace(/[+]/g, " ")

crediti vissu e Dante Cullari


6
Ci ho provato ma si verifica un errore come value.replace non è una funzione :(
Nisanth Kumar

thephpdeveloper ha aggiunto qualcosa per renderlo corretto ... che dovrebbe farlo ... vedi sopra modificato
Reigel

7
Questo non funzionerà se proviamo a sostituire più di un valore alla volta. :(
vissu,

56
Per sostituire più caratteri alla volta usare qualche cosa come questa: name.replace(/&/g, "-"). Qui sto sostituendo tutti i caratteri '&' con '-'. "g" significa "globale".
vissu,

9
Nota - potrebbe essere necessario aggiungere parentesi quadre per evitare errori -title.replace(/[+]/g, " ")
Dante Cullari,

67

Probabilmente il modo più elegante per farlo è farlo in un solo passaggio. Vedere val().

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

rispetto a:

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

Dai documenti:

.val( function(index, value) )

funzione (indice, valore) Una funzione che restituisce il valore da impostare.

Questo metodo viene in genere utilizzato per impostare i valori dei campi modulo. Per gli <select multiple="multiple"> elementi, è possibile selezionare più s passando in un array.

Il .val()metodo ci consente di impostare il valore passando una funzione. A partire da jQuery 1.4, alla funzione vengono passati due argomenti, l'indice dell'elemento corrente e il suo valore corrente:

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

In questo esempio viene aggiunta la stringa "elementi" ai valori degli input di testo.

Ciò richiede jQuery 1.4+.


ma a var value
mio avviso

41

Adoro il metodo concatenato di jQuery . Basta fare ...

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

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

17
questo non ha nulla a che fare con il concatenamento jquery in realtà. Dopo aver chiamato .val()è una stringa normale.
zerkms,

19

Una semplice fodera:

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

1
questo funzionerà solo se il valore è una stringa ... e inoltre, chiamare $("#text")due volte non è una buona pratica ...
Reigel

l'OP inoltre non ha specificato che voleva sostituire il valore di $("#text"):)
Reigel

Commento 1 ... Sbagliato. Commento 2 ... pensa alla logica della sua domanda, non è necessario specificare.
VIDesignz,

dimostralo .. e ricorda, datatoJan 27 '10 at 10:16
Reigel

non si sa nemmeno le buone pratiche .. si potrebbe desiderare di leggere questo .. stackoverflow.com/questions/3230727/...
Reigel

6

Può essere fatto con la normale funzione JavaScript replace().

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

3
Non sono sicuro di aver perso qualcosa, ma poiché il valore proviene dalla casella di testo è una stringa no? Esempio jsfiddle.net/xMBuA
Anders

4

Puoi usare le funzioni JavaScript come sostituisci e puoi racchiudere il codice jQuery tra parentesi:

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

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

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

O se la tua 9.61è già una stringa:

"9.61".replace('.',':')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.