Js 字符串中截取相应数字

一 、parseInt()方法

首先想到的是js提供的parseInt方法。
例一:对于纯数字的字符串用parseInt适用

     var str ="20200427";
   
     var num = parseInt(str);
  
     alert(num);//20200427  结果就是我们想要的

例二:
如果是数字开头,中间有字符的,则只会获取到整个字符串的开头数字

    var str ="2020-04-27";
   
    var num = parseInt(str);
 
    alert(num);//只有字符串中的第一个数字会被返回。这里只能截取到2020

例三:如果字符串前面有非数字字符,上面这种方法就不行了

    var str ="今天是:20200427";
  
    var num = parseInt(str);
   
     alert(num);//NaN  结果什么数据也获取不到。

在上面例子中会弹出NaN,解决这个问题,最简单的方法是:如果知道字符串格式后,去掉前面的非字符。

例四:直接去掉前面的字符串格式

    var str ="今天是:20200427";
     var num = parseInt(str.substring(3).substring(0).substring(1));
     alert(num);//20200427
    结果就是正确的。并且num的类型是number。alert(typeof num)//number

显然,这样就显得比较麻烦了。另外,java语言中也有parseInt()方法,里面传的字符串中只要有非数字,myeclipse就会提示错误。Js中的parseInt()方法传的可以有非数字字符串,只要字符串前面就照样运行,知道遇到非数字字符停下来。
比如,我们再来分析一下之前看过的例二

 var str ="2020-04-27";
var num = parseInt(str);
alert(num);//只有字符串中的第一个数字会被返回。这里只能截取到2020
     不会报错,结果还是一样,因为系统查找到"-"时就停止了,不管后面有没有数字都不会再提取了。所以不会出现20200427的结果。Js中有很多这样的例子,比如正则不写/g,默认查找符合的第一个子字符串就跳出,并不会往下面进行。本文第三个例子出现NaN,也是这个原因,请细细体会。

关于parseInt()方法,还可以有第二个参数。第二个参数表示第一个参数的进制,看个例子:

parseInt("11", 2); // 结果:3  如果想把一个二进制数字字符串转换成整数值,只要把第二个参数设置为 2 就可以了。

后一个参数不写,默认按10进制转换。

最后一个问题,parse函数是干嘛的?程序之间传递的都是字符串(文本类型),而使用时要转换成需要的类型。parse函数是把字符串转换成我们需要的类型,比如parseInt(),parseFloat()。

二、正则(重要)

前面说到正则。事实上,正则处理起来就比较简单了,替换掉非数字的字符就可以了。例子:

    var str ="2020-04-27";

    var num= str.replace(/[^0-9]/ig,"");

    alert(num);//20200427//这时就是我们想要的结果了

如有需要,请联系微信:hdyi1997 同时请说明来意,共同进步!!!

猜你喜欢

转载自blog.csdn.net/Y_6155/article/details/105785992
今日推荐