2017-10-18 47 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

相關問題