2013-11-25 123 views
1

如何在Javascript中查找數字/字符串中非零數字的最後一次出現?這樣,我們就可以將零填充的數字分成實際的數字和零填充。任何JS/Node庫都可以使用。使用Javascript查找非零數字的最後一個索引

嘗試使用.lastIndexOf()但沒有找到一種方法來定義一個非零數字。

輸入

1.23400 
1.00050 
1.03456 

輸出

['1.234', '00'] 
['1.0005', '0'] 
['1.03456'] 
+3

投下你浮到一個字符串,並使用正則表達式。 –

+0

我同意btoueg,我會寫一小段代碼來表明這一點。 – Aearnus

+0

@btoueg:這沒用。輸入已經是一個字符串。因爲如果它是一個浮點數,那末數就沒有零。 – Techniv

回答

3

使用正則表達式:

/^([0-9]+\.?[0-9]*?)(0*)$/

/^([0-9]+\.?[0-9]*?)(0*)$/.exec('1.23400'); // return ["1.23400", "1.234", "00"] 
/^([0-9]+\.?[0-9]*?)(0*)$/.exec('1.03456'); // return ["1.03456", "1.03456", ""] 

如果您通過獲取數字的有意義的部分來確定興趣,也可以使用parseFloat。

parseFloat('1.23400') // return 1.234 
+0

錯誤!「!!!!! http://jsfiddle.net/mrk1989/DhX38/ –

+0

當我把1.03456這個回報置於alert:1.03456,1.03456, –

+0

是的!這是預期的結果。 – Techniv

1

試試這個:

'1.23400'.match(/^.*?(?=0*$)|0+$/g) 
// ^.*?(?=0*$) : everything before zero or more trailing zeros 
// 0+$   : one or more trailing zeros 
0

試試這個:

function lastIndexOfDigit(str) { 
     var last_indices = []; 
     [1, 2, 3, 4, 5, 6, 7, 8, 9].map(function (digit) { 
      last_indices.push(str.lastIndexOf(digit)); 
     }); 
     var indices = last_indices.sort(function (a, b) { 
      return a - b; 
     }); 
     return indices[indices.length - 1]; 
} 
相關問題