一 parseInt()方法:
首先想到的是js提供的parseInt方法,例子:
var str ="4500元"; var num = parseInt(str); alert(num);//4500
結果就是我們想要的, 以為就這么簡單,那就錯了。如果字符串前面有非數字字符,上面這種方法就不行了:
var str ="價格:4500元"; var num = parseInt(str); alert(num);//NaN
這個例子中會彈出NaN,解決這個問題,最簡單的方法是:如果知道字符串格式后,去掉前面的非字符。上面這個例子中,去掉子串"價格:"
var str ="價格:4500元"; var num = parseInt(str.substring(1).substring(1).substring(1)); alert(num);//4500
顯然,這樣就顯得比較麻煩了。另外,java語言中也有parseInt()方法,里面傳的字符串中只要有非數字,myeclipse就會提示錯誤。Js中的parseInt()方法傳的可以有非數字字符串,只要字符串前面就照樣運行,知道遇到非數字字符停下來。比如,以下這個例子。
var str ="4500元,等級:2"; var num = parseInt(str); alert(num);//4500
不會報錯,結果還是一樣,因為系統查找到"元"時就停止了,不管后面有沒有數字都不會再提取了。所以不會出現45002的結果。Js中有很多這樣的例子,比如正則不寫/g,默認查找符合的第一個子字符串就跳出,並不會往下面進行。本文第二個例子出現NaN,也是這個原因,請細細體會。
關於parseInt()方法,還可以有第二個參數。第二個參數表示第一個參數的進制,看個例子:
parseInt("11", 2); // 結果:3 如果想把一個二進制數字字符串轉換成整數值,只要把第二個參數設置為 2 就可以了。
后一個參數不寫,默認按10進制轉換。
最后一個問題,parse函數是干嘛的?程序之間傳遞的都是字符串(文本類型),而使用時要轉換成需要的類型。parse函數是把字符串轉換成我們需要的類型,比如parseInt(),$.parseHTML()。
二、正則
前面說到正則。事實上,正則處理起來就比較簡單了,替換掉非數字的字符就可以了。例子:
var s ="價格4500元"; var num= s.replace(/[^0-9]/ig,""); alert(num);//4500
如果遇到字符夾帶數字的情況:
var s ="價格4500元,等級:2"; var num = s.replace(/[^0-9]/ig,""); alert(num);//45002
這個時候結果就是45002了。