0

我有一个我认为是一个简单的问题,但我发现很难找到简单的解决方案。我有一个捐赠页面,人们可以输入他们的金额。问题是一些文化使用句点来表示小数点,而另一些文化使用逗号。我也在四舍五入到最接近的整数。

有没有一种简单的方法来格式化数字:

12.95 将等于 13。12,95 将等于 13。12,000 将等于 12000。12,000 将等于 12000。12.000 将等于 12000。12.45 将等于 12。12,45 将等于 12。

基本上我需要去掉任何逗号和句点并创建一个适当的整数。这需要基于实际输入的数字,因为有些人可能使用欧洲电脑和键盘,但希望捐赠美元金额等。

谢谢!

4

1 回答 1

0

这是适用于所有给定示例的最短解决方案。我检查倒数第三个字符,如果是逗号或点,我将其假定为整数分隔符。

function parse(source) {
    var sep = source.charAt(source.length - 3);

    switch (sep) {
        case '.':
        case ',':
            var parts = source.split(sep);
            var norm = parts[0].replace(/(\.|,|\s)/g, '') + '.' + parts[1];
            break;
        default:
            var norm = source.replace(/(\.|,|\s)/g, '');
    }

    return Math.round(Number(norm));
}

演示:http: //jsfiddle.net/5C4aN/2/

还可以查看accounting.js,它在格式化/解析货币方面做得很好。

于 2013-10-10T21:42:40.833 回答