Javascript - 如何正确使用replace()函数

时间:2017-06-26 23:59:50

标签: javascript

我愿意做以下事情:

我有:

    var distance1 = "5.5 Km";
    var distance2 = "5,5 Km";
    //The below works as expected and returns 5.5
    var finalDistance = distance1.replace( /[^\d\.]*/g, '');

    //However the below doesn't and print 55 instead
    distance2.replace( /[^\d\.]*/g, '');

    //I've tried the below too and it throws 5,5. But I want 5.5
    distance2.replace( /[^\d\.\,]*/g, '');

3 个答案:

答案 0 :(得分:3)

首先,用,替换.的所有出现,然后用.替换非数字字符(''除外):

distance2 = distance2.replace( /,/g, '.').replace(/[^\d\.]+/g, '');

其中:

/,/g : matches all commas ',' that will be replaced by '.'
/[^\d\.]+ : matches any sequence of non-digit and non-dot ('.') characters that will be removed (replaced by the empty string '').

第一个将变换"5,55 KM"替换为"5.55 KM",然后第二个将后者变换为"5.55"

注意:如果您只有一个逗号,或者只对第一个遇到的逗号感兴趣,那么您可以使用:replace(',', '.')代替replace(/,/g, '.')

如果您只使用浮动表示,则可以使用parseFloat而不是第二个replace

var number = parseFloat(distance2.replace(/,/g, '.'));

答案 1 :(得分:0)

replace的工作原理是“找到此字符串并替换为此字符串”。第一个参数是您要查找的内容,第二个参数是要替换它的内容。因此,在您的代码中,您无需替换,

distance2.replace( /[^\d\.]*/g, '');

它也不会编辑“就地”字符串,因此您需要将distance2变量分配给返回值。此外,对于像这样的简单工作,您不需要使用正则表达式。您只需输入一个字符串作为第一个参数,replace将找到所有匹配项。我就是这样做的:

distance2 = distance2.replace(',', '.');

进一步阅读:

https://www.w3schools.com/jsref/jsref_replace.asp https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace

答案 2 :(得分:-1)

您需要将替换值重新分配给变量。

distance2 = distance2.replace( /[^\d\.]*/g, '');