如何将数字中的逗号替换为小数点(或任何其他符号)

61

目前我还没有找到解决方法,用句点替换逗号。

var tt="88,9827";
tt.replace(/,/g, '.')
alert(tt)

//88,9827
我试图将逗号替换为句点。 提前感谢。

我知道这是一个超级老的问题,但对于那些有复杂 CSV 样式字符串的人来说,我的评论可能很有趣。如果你想在像这样的字符串中替换逗号为点: "0,001; x,y,z; 0,a;b,1; 2,45;" 使用已接受的答案将不起作用。你可以尝试如下方法: var res = tt.replace(/([0-9]{1,})(,)([0-9]{1,})/g,"$1.$3"); 这将仅匹配逗号,如果它们被两边至少一个数字包围。 - Fedor Petrov
6个回答

121

replace() 方法不会修改原字符串 (tt),而是返回一个新的字符串,所以你需要将变量 (tt) 设置为 replace() 函数返回的新字符串。

tt = tt.replace(/,/g, '.')

JSFiddle


如果您将此应用于任何字符串,可能会遇到问题。例如,像“1、2、3”这样的输入会变成“1. 2. 3”。为确保您有一个数字,请参见 https://stackoverflow.com/q/52329376/1066234 上的解决方案。 - Avatar

19

5
替换字符后,您需要将其分配给变量。
var tt = "88,9827";
tt = tt.replace(/,/g, '.')
alert(tt)

在弹出框中将显示88.9827

3

从函数的定义中(http://www.w3schools.com/jsref/jsref_replace.asp):

replace() 方法搜索字符串中指定的值或正则表达式,并返回替换后的新字符串。

此方法不会改变原始字符串。

因此,代码行:tt.replace(/,/g, '.') 不会改变 tt 的值;它只是 返回 新值。

您需要将此行替换为:tt = tt.replace(/,/g, '.')


1
根据文档replace返回新字符串 - 它不会修改您传递给它的字符串。
var tt="88,9827";
tt = tt.replace(/,/g, '.');
^^^^
alert(tt);

3
@Leo 不要真的打尖括号。 - jbabey

1

这将需要新的变量ttfixed

然后在tt值插槽下面替换所有下面的指针,将tt更改为ttfixed

ttfixed = (tt.replace(",", "."));

请花些时间来改善您的回答格式。 - Xan
多余的括号是不必要的,而且由于 OP 希望更改原始变量,因此无需创建新变量。另外,如果您要创建新变量,应在前面添加 var 以避免创建全局变量。 - Smern
这是一个非常简单但有效的解决方案。 - Alberto Perez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接