Js 字符串中提取數字


一 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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM