提取含有数字,特殊符号,英文字符,汉语字符,小数点的字符串中的数字包括小数点

4 篇文章 0 订阅

简单实用的一种

var str = “2.65KM之内”;

var strstr = “字符串zifuchuan36.254KM之内”;

var num = str.replace(/[0-9\.\0-9]/ig,""); //结果: 2.65

var numPre = strstr.replace(/[0-9\.\0-9]/ig,""); //结果 36.254

全面详细的,但是亲测小数点会被排除掉

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

两篇都是借鉴整理的,详见这两篇博客

方法1:
https://www.cnblogs.com/KruceCoder/p/3529239.html
方法2:https://www.cnblogs.com/xiaochongchong/p/5304909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值