Js 字符串中提取数字

一 parseInt()方法:

首先想到的是js提供的parseInt方法,例子:

var str ="4500元";
var num = parseInt(str);
alert(num);//4500    

以为就这么简单,那就错了。如果字符串前面有非数字字符,上面这种方法就不行了:

var str ="价格:4500元";

var num = parseInt(str);

alert(num);//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,默认查找符合的第一个子字符串就跳出,并不会往下面进行。

二正则

正则处理起来就比较简单了,替换掉非数字的字符就可以了。例子:

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

时间: 2024-12-16 11:59:50

Js 字符串中提取数字的相关文章

从字符串中提取数字串并排序(C语言实现)

#include "stdio.h" #include "stdlib.h" #include "string.h" typedef int BOOL; #define TRUE 1; #define FALSE 0; static void SplitBySeparator( char **arr, char *str, int size, char sep); void SortNums ( char* str, int size, int

java从字符串中提取数字

1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只需要直接进入该页面然后直接找到第一条或者最后一条数据即可. 2.例子: 界面: javs代码: /** * java从字符串中提取数字 * str:传递过来的字符串 */ public static List<String> getNUm(String str){ str.trim(); //St

[编程题] 扫描透镜(本题还涉及如何从字符串中提取数字)

在N*M的草地上,提莫种了K个蘑菇,蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 扫描透镜可以扫描出(3*3)方格中所有的蘑菇,然后兰博就可以清理掉一些隐形的蘑菇. 问:兰博最多可以清理多少个蘑菇? 输入描述: 第一行三个整数:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小; 接下来K行,每行两个整数x,y(1≤x≤N,1≤y≤M).代表(x,y)处提莫种了一个蘑菇.

Js 利用正则 在字符串中提取数字、替换非数字字符为指定字符串

var s ="总金额4500元"; var num= s.replace(/[^0-9]/ig,""); alert(num);//4500 上述示例会把数字匹配到直接转成数字: var s ="总金额4500元,利润:28"; var num = s.replace(/[^0-9]/ig,""); alert(num);//450028   如果遇到字符夹带数字的情况:上述就会直接转成数字拼接起来的方式: 原文地址:htt

c++中从一段字符串中提取数字

采用标准输入输出: 输入:12&3 34*133^3131   13031* 输出:12 3 34 133 3131 13031 思路,先将整个输入存进一个字符串,再解析字符串,这样运行速度会快些. 1 int GetNum(const char* str,int* num) //输入:str---字符串指针,num---要保存数字的数组指针 返回:数字个数 2 { 3 int len=strlen(str); 4 int index=0; 5 int t; 6 for(int i=0;i<

从字符串中提取数字

with n(str, ori, pos) as ( values ('1,3533,3528,3657,', 1, locate(',','1,3533,3528,3657')) union all select str, pos+length(','), locate(',', str, pos+length(',')) from n where locate(',', str, pos+length(','))>0) , tmp as ( select substr(str, ori, p

IOS字符串中提取数字

NSCharacterSet* nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; int remainSecond =[[jsonObject[@"message"] stringByTrimmingCharactersInSet:nonDigits] intValue];

C# DataTable中按字符串中的数字排序

例如datatable中有一列是门牌号格式是xx-xx-xx,或字符串中含有汉字或其他符号等等,如何按照正确的数字顺序排序呢? 1.获得字符串中的数字. 2.在datatable中添加一列,类型是Int或double或decimal类型的,转为排序准备.然后利用dataview.sort来排序. 1.获得字符串中的数字代码: /// <summary> /// 获取字符串中的数字 /// </summary> /// <param name="str"&g

java截取字符串中的数字

java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法,正则表达式,集合类,还有就是String类提供的方法. 1 String类提供的方法: package 测试练习; import java.util.*; public class get_StringNum { /**  *2012.6.2  */ public static v