2013-05-31 25 views
0

對不起,但我找不到工作點替換在stackoverflow上。 人民詢問更換Javascript替換正則表達式的點,但不能正常工作

var str = '. 950.000.000, -'; 
str = str.replace(/\./gi, ''); 
alert(parseInt(str)); // yes, it works & will output correctly 

但是,它不會工作,當我的「海峽」 var爲:盧比。 950.000, - 。它是我所在地區的貨幣格式,我想用它做數學。我這樣做,而不是工作:

var str = 'Rp. 950.000, -'; 
str = str.replace(/\./gi, '');// i dont know, but the str values now is nothing 
alert(parseInt(str)); // sure, it outputs nothing 

我只是想替換所有點(這樣就不會困擾數學運算,因爲點是對數十進制)。

+0

str.replace的輸出是'「Rp 950000, - 」' – karthikr

+0

您正嘗試在非數字的東西上使用'parseInt'。你的'alert'將打印'NaN'。如果您想要的只是刪除'parseInt':'Rp 950000,-' – Chase

+0

這種方法聽起來文化上受到破壞(或以文化爲中心,取決於它如何被查看)。應該如何處理「1.234,56」(或「1,234.56」)? – user2246674

回答

0

'Rp. 950.000, -'你將留下'Rp 950000, -'字符串中移除所有的點之後。如果您嘗試使用此字符串作爲parseInt(),它將因爲開頭的字母和結尾的其他字符而失敗。如果你想從你的字符串中刪除所有非數字字符,你可以使用以下命令:

str = str.replace(/\D/g, ''); 

parseInt()後應該可以正常工作,給你950000

+0

謝謝你的答案。別人的答案也不錯。謝謝你們。我選擇這個,因爲這解釋了爲什麼我的源不起作用。謝謝 –

+0

'parseInt'不會因爲最後的非數字字符而失敗 - 它會忽略任何尾隨的非數字。領先的非數字是不同的故事 – Ian

+0

@伊恩:謝謝! –

2

爲什麼不用\D替換所有不是數字的東西?

var str = 'Rp. 950.000, -'; 
str = str.replace(/\D/gi, '');// i dont know, but the str values now is nothing 
alert(parseInt(str, 10)); 

工作實例http://jsfiddle.net/e8dMD/1/

+0

除非你有小數位,如950.000,25。但這不是什麼傑赫問... – Mifeet

+0

謝謝,人!有用! –

相關問題