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?

Nisanth Kumar
la source
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

Reigel
la source
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+.

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

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

"9.61".replace('.',':')
TU
la source