前端 JavaScript 字符串中提取数字

createh54个月前 (02-01)技术教程22
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));
or
var num = parseInt(str.slice(3));

alert(num);//4500

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

var str ="4500元,等级:2";

var num = parseInt(str);

alert(num);//4500

关于 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

var num2 = s.match(/[0-9]+/i,'');
alert(num2)//4500

相关文章

MySql字符串拆分实现split功能(字段分割转列、转行)

字符串转多行字符串拆分: SUBSTRING_INDEX(str, delim, count)替换函数:replace( str, from_str, to_str)获取字符串长度:LENGTH( s...

Java往oracle存clob类型的值时,字符长度过长怎么办?

业务场景将照片转为数字长串后,由于字符过长,java往数据库中直接存为clob字段时,oracle会报ORA-01704问题:字符串文字过长。这是因为一般对含有CLOB字段的数据操作。如果CLOB字段...

Java实现MD5加盐加密算法(java中md5加密)

MD5加密MD5是常用的加密算法,在用户注册时通过算法加密的密码存入数据库,保护用户密码,数据库管理员不能直接看见密码,即使用户数据库被盗,没有存储明文的密码对用户来说也多了一层安全保障。用户登录时,...

二、Java字符串/时间处理(java字符串时间格式转换)

二、Java字符串/时间处理1、 文章背景工作已有五年之久,回望过去,没有在一线城市快节奏下学习成长,只能自己不断在工作中学习进步,最近一直想写写属于自己的文章,记录学习的内容和知识点,当做一次成长。...

mysql拼接函数讲解及配合截取函数使用

在上一篇我们讲解了mysql的截取函数用法。本篇我们将讲解mysql的拼接函数以及配合截取函数实现当留言数字过多省略显示的场景。concat函数:把参数连成一个长字符串并返回(任何参数是NULL时返回...

我接手前同事写的烂Java代码,不小心搞出了一个内存泄露事故

目录String 字符串在内存里是如何存储的?String.intern() 方法String 字符串是如何引发内存泄漏呢?总结今天给大家聊聊咱们平时写代码的时候,最常见的 String 字符串代码,...