如何替换一个数字中的多个特殊字符?

时间:2015-07-28 15:15:19

标签: javascript regex

我有一个数字说2,500.00,我想将数字转换为2.500,00。因此,我们可以使用替换

替换特殊字符
var x = 2,500.00; 
x.replace(/,/g,".");

和" Dot"我们也可以做到。但在这种情况下,它不会起作用,因为当我们如上所述为逗号应用替换功能时,数字将变为2.500.00,如果我们现在申请,它将变为2,500,00。

那么有没有办法将2,500.00转换为2.500,00?

5 个答案:

答案 0 :(得分:3)

String.prototype.replace can take a function:

'2,123,500.00'.replace(/[,.]/g, function(c){ return c===',' ? '.' : ','; });

答案 1 :(得分:2)

您可以使用:

var x = '2,123,500.00'; 
var arr = x.split('.');
var y = arr[0].replace(/,/g, '.') + ',' + arr[1];
//=> 2.123.500,00

答案 2 :(得分:1)

You're in luck, .replace() accept a function as second argument. That function has the matched string as argument and the returned value will be the replace_by value of .replace().

In short, you can simply check what the matched string is and return the right value :

var str = "2,500.00";

var changed_str =  str.replace(/,|\./g, function(old){
    if (old === '.')
        return ',';
    else if (old === ',')
        return '.';
});


document.write(changed_str)

答案 3 :(得分:0)

为什么不使用内置方法正确格式化数字?

Number.toLocaleString()在这里工作得很好。

如果你实际上有一个数字,你可以使用正确的语言环境轻松实现这一点。如果您有一个字符串表示您的号码,您首先必须解析它。

答案 4 :(得分:-1)

This (now) works for any number of commas or dots, even if trailing or leading dots or commas.

HTML:

<div id="result"></div>

JS:

var x = '.,2.123,50.0.00.';

var between_dots = x.split('.');
for (var i = 0; i < between_dots.length; i++) {
    between_dots[i] = between_dots[i].replace(/,/g, '.');
}
var y = between_dots.join(',');

document.getElementById('result').innerHTML = y;

Here's the JSFiddle