我有以下代码:
var x = "100.007"
x = String(parseFloat(x).toFixed(2));
return x
=> 100.01
这效果非常好,正是我想要的效果。我只想要一个小小的补充,类似于:
var x = "100,007"
x.replace(",", ".")
x.replace
x = String(parseFloat(x).toFixed(2));
x.replace(".", ",")
return x
=> 100,01
但是,此代码将替换第一次出现的“,”,我想在其中捕获最后一个。任何帮助将不胜感激。
您可以使用正则表达式来做到这一点:
x = x.replace(/,([^,]*)$/, ".$1");
该正则表达式匹配一个逗号,后跟不包含逗号的任意数量的文本。替换字符串只是一个句点,后面跟着原来的最后一个逗号后面的内容。字符串中其前面的其他逗号不会受到影响。
现在,如果您确实要转换“欧洲风格”格式的数字(由于缺乏更好的术语),您还需要担心“。” “美国风格”数字中带有逗号的位置的字符。我想你可能只是想摆脱它们:
x = x.replace(/\./g, '');
当您在字符串上使用“.replace()”函数时,您应该明白它返回修改后的字符串。但是,它不会修改 original 字符串,因此语句如下:
x.replace(/something/, "something else");
对“x”的值没有影响。
您可以使用正则表达式。你想替换最后一个',',所以基本的想法是替换后面没有','的','。
x.replace(/,([^,]*)$/, ".$1");
会返回你想要的:-)。
您可以使用 lastIndexOf() 函数来查找最后一次出现的
,
并替换它。
另一种方法是使用带有行尾标记的正则表达式:
myOldString.replace(/,([^,]*)$/, ".$1");
您可以使用
lastIndexOf
查找最后一次出现的 ,
。然后您可以使用 slice
将 ,
之前和之后的部分放在一起,并在其间放置一个 .
。
你不用担心是否是最后一个“.”,因为只有一个。 JavaScript 不会在内部使用逗号或点分隔集存储数字。