前端 JavaScript 字符串中提取数字

boyanx3个月前技术教程30
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

相关文章

Bun v0.7 大版本发布,与 Vite 牵手来破局?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。今天给大家带来...

JavaScript字符串indexOf()方法教程

一、简介indexOf() 方法用于在字符串中查找指定的文本,并返回其首次出现的位置。如果找不到指定的文本,则返回-1。二、语法 string.indexOf(searchValue[, fromIn...

深入理解Node.js中的垃圾回收和内存泄漏的捕获

本文翻译自Apmblog网站Daniel Khan撰写的《Understanding Garbage Collection and hunting Memory Leaks in Node.js》一文...

JavaScript:字符串的相关方法_js 字符串方法大全

字符串的相关方法:字符串的所有实例方法,都可以通过基本数据类型字符串去调用字符串其本质就是一个字符数组str.length 获取字符串的长度str[index] 获取指定位置的字符// 创建一个字符串...

js怎么将数字字符串转化为数字_js 字符串转换数字

比如怎么将字符串“123”变成Number类型123,只需要将“123”*1就变成了123...

sql中常用的字符串函数详解_sql字符串是什么意思

在日常开发中遇到处理最多的可能字符串要算其中一个了,什么替换啊 截取啊 大小写转换啊、删除空格啊等等,这些操作我们可以在前端操作,也可以直接在数据库的sql中操作,那么我们来看一下sql中处理字符串的...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。