Javascript Regex: remplacer le dernier point par une virgule

J'ai le code suivant:

var x = "100.007" x = String(parseFloat(x).toFixed(2)); return x => 100.01 

Cela fonctionne de façon spectaculaire, comme je le veux. Je veux juste un petit ajout, qui est quelque chose comme:

 var x = "100,007" x.replace(",", ".") x.replace x = String(parseFloat(x).toFixed(2)); x.replace(".", ",") return x => 100,01 

Cependant, ce code remplacera la première occurrence du ",", où je veux attraper le dernier. Toute aide serait appréciée.

    Vous pouvez le faire avec une expression régulière:

     x = x.replace(/,([^,]*)$/, ".$1"); 

    Cette expression régulière correspond à une virgule suivie d'une quantité de texte qui ne comprend pas une virgule. La chaîne de remplacement est juste une période suivie de tout ce qui est venu après la dernière virgule d'origine. D'autres virgules précédant la chaîne ne seront pas affectées.

    Maintenant, si vous convertisziez vraiment des nombres formatés en "style européen" (faute d'un meilleur terme), vous devrez vous inquiéter du "." Personnages dans des endroits où un numéro "style américain" aurait des virgules. Je pense que vous voudrez probablement vous débarrasser d'eux:

     x = x.replace(/\./g, ''); 

    Lorsque vous utilisez la fonction ".replace ()" sur une chaîne, vous devez comprendre qu'elle renvoie la chaîne modifiée. Il ne modifie pas la chaîne d' origine , mais une déclaration comme:

     x.replace(/something/, "something else"); 

    N'a aucun effet sur la valeur de "x".

    Vous pouvez le faire en utilisant la fonction lastIndexOf () pour trouver la dernière occurrence de la , et la remplacer.

    L'alternative consiste à utiliser une expression régulière avec le marqueur de fin de ligne:

     myOldString.replace(/,([^,]*)$/, ".$1"); 

    Vous pouvez utiliser lastIndexOf pour trouver la dernière occurrence de lastIndexOf Ensuite, vous pouvez utiliser une slice pour placer la pièce avant et après la , avec un . entre.

    Vous pouvez utiliser un regexp. Vous souhaitez remplacer le dernier ',', donc l'idée de base est de remplacer ',' pour lequel il n'y a pas ',' après.

     x.replace(/,([^,]*)$/, ".$1"); 

    Réponds ce que vous voulez :-).

    Vous n'avez pas à vous soucier de savoir si c'est le dernier ".", Parce qu'il n'y en a qu'un. JavaScript ne stocke pas de numéros internes avec des ensembles délimités par des virgules ou des points.