2017-10-18 45 views
0

我有一个号码后两个字符,例如:位数字点

25297710.1088 

我需要点之后增加一点他们之间并留下两个字符。 例如:

25 297 710.10 

虽然我停在此:

$(td).text().reverse().replace(/((?:\d{2})\d)/g, '$1 ').reverse()); 
String.prototype.reverse = function() { 
    return this.split('').reverse().join(''); 
} 

从这个代码中,我得到如下:

25 297 710.1 088 

哪里$(td).text()我来自的细胞得到一个数字在表中排。 如果我有一个数字,例如:

25297710.10 

然后我得到:

25 297 710.10 

这没关系。

我需要做什么才能在点之后留下两个字符?

+0

将字符串按点分割,然后在操作后将切割余下的内容添加到新字符串中。 – Sergey

+0

http://numeraljs.com/你知道吗? –

+0

谢尔盖 - 我会试试这个。谢谢。 – mosxe

回答

1

您可以使用RegExp格式化数字/字符串。使用相关的toString方法将输入转换为字符串。

function formatNumber(input) { 
 
    return input.toString().replace(/\d*(\d{2})(\d{3})(\d{3})\.(\d{2})\d*$/, "$1 $2 $3.$4"); 
 
} 
 

 
var str = "25297710.1088"; 
 
var num1 = 25297710.1088; 
 
var num2 = 2545454545454.2254; 
 
var num3 = 232545454511112.3354122313123123; 
 

 
console.log(formatNumber(str)); 
 
console.log(formatNumber(num1)); 
 
console.log(formatNumber(num2)); 
 
console.log(formatNumber(num3));

+0

这不是行得通,因为它不会在点之后留下两个字符,并且如果我们有数字,例如:2545454545454.1054 - 不适用。 – mosxe

+0

固定。再试一次。 –

+0

好。我更新函数return input.toString()。replace(/(\ d {2})\ d * $ /,“$ 1”)。replace(/ \ B(?=(\ d {3})+ !\ d))/ g,“”);但是当数字:22000我得到了:22 – mosxe

0

我认为你可以做下面的步骤:

1)你有25 297 710.10

2)你找点符号的位置 - @ POS

>

3)你在@pos和你的字符串结束之间的范围内替换字符串中的位

4)将点后的字符串切换为2个字符后

+0

我要实现这一点。谢谢 – mosxe

相关问题