Comment puis-je remplacer la chaîne en JavaScript pour convertir «9,61» en «9:61»?


275

Étant donné la ligne de code

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

et value = 9.61, je dois convertir 9.61à 9:61. Comment puis-je utiliser la fonction de remplacement JavaScript ici?


29
Notez que cela n'a rien à voir avec jQuery, mais simplement avec du vieux javascript.
Ikke

1
J'ai le même problème. J'ai une variable 'var' en javascript et je veux y remplacer la chaîne / les caractères. J'ai essayé ce code: var myObject = "my% dynamic% value \ n"; myObject = myObject.replace ("%", ""). replace ("\ n", ""); A également essayé myObject = myObject.replace ('%', ''). Replace ('\ n', ''); Cela me donne l'erreur que remplacer n'est pas une fonction connue
Balaji Birajdar

Le message d'erreur exact pour le problème ci-dessus est "Erreur d'exécution Microsoft JScript: l'objet ne prend pas en charge la propriété ou la méthode" remplacer ""
Balaji Birajdar

Réponses:


539

Fais-le comme ça:

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

Mis à jour pour refléter la version actuelle de jQuery. Et il y a aussi beaucoup de réponses ici qui correspondent le mieux à une même situation que celle-ci. En tant que développeur, vous devez savoir lequel est lequel.

Remplacer toutes les occurrences

Pour remplacer plusieurs caractères à la fois utiliser quelque chose comme ceci: name.replace(/&/g, "-"). Ici, je remplace tous les &caractères par -. gsignifie "global"

Remarque - vous devrez peut-être ajouter des crochets pour éviter une erreur -title.replace(/[+]/g, " ")

crédits vissu et Dante Cullari


6
J'ai essayé cela, mais une erreur s'est produite en tant que value.replace n'est pas une fonction :(
Nisanth Kumar

thephpdeveloper a ajouté quelque chose pour le rendre correct ... qui devrait le faire ... voir ci-dessus édité
Reigel

7
Cela ne fonctionnera pas si nous essayons de remplacer plus d'une valeur à la fois. :(
vissu

56
Pour remplacer plusieurs caractères à la fois utiliser quelque chose comme ceci: name.replace(/&/g, "-"). Ici, je remplace tous les caractères '&' par '-'. "g" signifie "global".
vissu

9
Remarque - vous devrez peut-être ajouter des crochets pour éviter une erreur -title.replace(/[+]/g, " ")
Dante Cullari

67

La façon la plus élégante de le faire est probablement de le faire en une seule étape. Tu vois val().

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

par rapport à:

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

De la documentation:

.val( function(index, value) )

fonction (index, valeur) Une fonction renvoyant la valeur à définir.

Cette méthode est généralement utilisée pour définir les valeurs des champs de formulaire. Pour les <select multiple="multiple"> éléments, plusieurs s peuvent être sélectionnés en passant dans un tableau.

La .val()méthode nous permet de fixer la valeur en passant une fonction. Depuis jQuery 1.4, la fonction reçoit deux arguments, l'index de l'élément courant et sa valeur courante:

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

Cet exemple ajoute la chaîne "items" aux valeurs des entrées de texte.

Cela nécessite jQuery 1.4+.


mais comme je le vois, le gars veut juste changer la var valueet non la valeur dans la zone de texte comme vous l'avez suggéré ...
Reigel

41

J'adore le chaînage de méthodes de jQuery . Faites simplement ...

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

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

17
cela n'a rien à voir avec le chaînage jquery en fait. Après avoir appelé, .val()c'est une chaîne régulière.
zerkms

19

Un simple liner:

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

1
cela ne fonctionnera que si la valeur est une chaîne ... et aussi, appeler $("#text")deux fois n'est pas une bonne pratique ...
Reigel

l'OP n'a pas non plus précisé qu'il voulait remplacer la valeur du $("#text"):)
Reigel

Commentaire 1 ... faux. Commentaire 2 ... réfléchissez à la logique de sa question, pas besoin de préciser.
VIDesignz

le prouver .. et rappelez-vous, datéJan 27 '10 at 10:16
Reigel

vous ne connaissez même pas les bonnes pratiques .. vous voudrez peut-être lire ceci .. stackoverflow.com/questions/3230727/…
Reigel

6

Cela peut être fait avec la fonction JavaScript standard replace().

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

3
Je ne sais pas si j'ai raté quelque chose, mais comme la valeur provient de la zone de texte, c'est une chaîne non? Exemple jsfiddle.net/xMBuA
Anders

4

Vous pouvez utiliser des fonctions JavaScript comme replace, et vous pouvez encapsuler le code jQuery entre crochets:

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

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

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

Ou si votre 9.61est déjà une chaîne:

"9.61".replace('.',':')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.