2013-01-21 34 views
0

我使用innerHTML方法將一個字符串檢索到了一個變量。字符串是:轉換將字符串複雜化爲整數?

£ 125.00 
<!-- End: pagecomponent/pricesplit --> 

我只想要125.00部分。是否有可能使用parseInt()方法將其轉換爲整數?另外我能做些什麼來提取125.00部分?

謝謝

+0

'£  125.00'.match(/ \ d +/ig); – salexch

+0

不,你想使用'parseFloat' – Bergi

+0

我已經添加了描述你爲什麼不能使用'parseInt'以及如何只提取數字值。 –

回答

3

你可能需要使用正則表達式來刪除任何東西,但數字和時間,然後在剩下的字符串運行parseInt

parseInt(yourString.replace(/[^\d.]/g, ''), 10); 

測試正則表達式here。這是一個故障:

/.../只是用於包裝正則表達式的語法。忽略這些。

[...]創建一個字符類。

^當放置在字符類的開始時,它會否定所有內容。

\d任何數字

.字面週期。它不需要在角色類中轉義 - 在它之外意味着「任何角色」並且需要被轉義。

所以/[^\d.]/的意思是「匹配任何不是數字或句點」,然後用空字符串替換它。

如果您的號碼可能包含小數點後的有效數字,如125.50,則應使用parseFloat而不是parseInt

+0

我不認爲這將是一個可靠的匹配:-)想想在價格中沒有發生的數字,或者沒有小數的價格... – Bergi

+0

順便說一句,這個點已經在'\ D'類 – Bergi

+0

@Bergi價格無小數點會正常工作。數字之外的數字會導致問題,OP將不得不知道他的字符串的格式,看看他是否需要解決這個問題。根據[本網站](http://www.regular-expressions.info/charclass.html),點不在'\ D'中。 「'd」是'[0-9]'的縮寫。「 – jbabey

1

您可以使用正則表達式獲取該值。這裏有一個例子:

var str = '£&nbsp;125.00<!-- End: pagecomponent/pricesplit -->'; 
parseInt((/\d+/).exec(str)[0], 10); 

或者,如果你也想獲得零:

(/\d+\.\d+|\d+/g).exec(str)[0] 

它直接使用parseInt因爲當一個字符串不以數字parseInt不啓動你不能得到工作。

+0

我相信只有允許數字纔會去掉''',給你'12500'而不是'125'。 – jbabey