java从字符串中提取数字的简单实例
随便给你一个含有数字的字符串,比如:
String s="eert343dfg56756dtry66fggg89dfgf";
那我们如何把其中的数字提取出来呢?大致有以下几种方法,正则表达式,集合类,还有就是String类提供的方法。
1 String类提供的方法:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package 测试练习;import Java.util.*;public class get_StringNum {/** *2016.10.25 */public static void main(String[] args) {String str = "love23next234csdn3423javaeye";str=str.trim();String str2="";if(str != null && !"".equals(str)){for(int i=0;i<str.length();i++){if(str.charAt(i)>=48 && str.charAt(i)<=57){str2+=str.charAt(i);}}}System.out.println(str2);}}output:232343423 |
这个方法有个明显的缺点,只能把数字全部提取到一起,不能分别提取。当然也可以改进,有兴趣的朋友可以试试。
2 正则表达式
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class get_StringNum {/** *2016.10.25 */public static void main(String[] args) {String a="love23next234csdn3423javaeye";String regEx="[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(a); System.out.println( m.replaceAll("").trim());}}output:232343423 |
Pattern ,Matcher是java.util.regex软件包里的两个类,具体用法大家可以查阅一下api。同样也不能单个提取数字。
3 集合类库
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class get_StringNum {/** *2016.10.25 */public static void main(String[] args) { String a="love23next234csdn3423javaeye";List<String> digitList = new ArrayList<String>();Pattern p = Pattern.compile("[^0-9]");Matcher m = p.matcher(a);String result = m.replaceAll("");for (int i = 0; i < result.length(); i++) {digitList.add(result.substring(i, i+1));}System.out.println(digitList);}}output:[2, 3, 2, 3, 4, 3, 4, 2, 3] |
相同的思路:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class get_StringNum {/** *2016.10.25 */public static void main(String[] args) { String a="love23next234csdn3423javaeye"; List<String> ss = new ArrayList<String>(); for(String sss:s.replaceAll("[^0-9]", ",").split(",")){ if (sss.length()>0) ss.add(sss); } System.out.print(ss);}}output:[2, 3, 2, 3, 4, 3, 4, 2, 3] |
很明显,利用正则表达式我们就可以分别提取数字了。
另外还有一个利用查阅文档找出的答案,如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/** * 从字符串文本中获得数字 *@param text *@return */ publicstatic List<Long> getDigit(String text) { List<Long> digitList =new ArrayList<Long>(); Pattern p= Pattern.compile("(\\d+)"); Matcher m= p.matcher(text); while (m.find()) { String find= m.group(1).toString(); digitList.add(Long.valueOf(find)); }return digitList; } |
两个用正则表达式匹配的判断方法,如下;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// 判断一个字符串是否都为数字 public boolean isDigit(String strNum) { return strNum.matches("[0-9]{1,}"); } // 判断一个字符串是否都为数字 public boolean isDigit(String strNum) { Pattern pattern = Pattern.compile("[0-9]{1,}"); Matcher matcher = pattern.matcher((CharSequence) strNum); return matcher.matches(); } //截取数字 public String getNumbers(String content) { Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher(content); while (matcher.find()) { return matcher.group(0); } return ""; } // 截取非数字 public String splitNotNumber(String content) { Pattern pattern = Pattern.compile("\\D+"); Matcher matcher = pattern.matcher(content); while (matcher.find()) { return matcher.group(0); } return ""; } |
以上
/**提取中文、数字、英文*/
@Test
public void test (){
String str = "……^1dsf の adS DFASFSADF阿德斯防守对方asdfsadf37《?:?@%#¥%#¥%@#$%#@$%^><?1234";
String regEx="[a-zA-Z0-9\\u4e00-\\u9fa5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
while(m.find()){
sb.append(m.group());
}
System.out.println(sb);
}
1 提取中文:regEx=“[\\u4e00-\\u9fa5]";
2 提取数字:regEx=“[0-9]";
3 提取英文:regEx=“[a-zA-Z0-9]";
4 提取英文和数字:regEx=“[a-zA-Z0-9]";
java从字符串中提取数字的简单实例的更多相关文章
- java从字符串中提取数字
string类函数的补充说明: trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾的空格都被删除了,例子如下:String s=" Hello World ".tri ...
- java截取字符串中的数字
java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...
- Oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个translate函数的小技巧,从任意字符串中提取数字(调用2次translate函数).这个办法是一个公司同事发现的,用起来很方便,但理解 ...
- 在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符
原文:在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符 最近做项目的时候,经常用到一个字符串中的某些字符,处理起来非常的棘手,现在用下面的方法就可以很方便的从字符串中处理你想要的 ...
- JAVA从字符串中提取纯数字
/** * 从字符串中提取纯数字 * @param str * @return */ public static String getNumeric(String str) { String regE ...
- Java去除字符串中 除数字和逗号以外的符号
例: public static void main(String[] args) { // 去除字符串中 除数字和逗号以外的符号 String str = "_1066,_1068,_10 ...
- Js 字符串中提取数字
一 parseInt()方法: 首先想到的是js提供的parseInt方法,例子: var str ="4500元"; var num = parseInt(str); alert ...
- SQL函数:字符串中提取数字,英文,中文,过滤重复字符(转)
--提取数字 IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL DROP FUNCTION DBO.GET_NUMBER2 GO )) ) AS BEGIN BE ...
- mysql—从字符串中提取数字(类型1)
select reason,CHAR_LENGTH(reason),mid(reason,5,CHAR_LENGTH(reason)-5)+0 from `table` 解释: CHAR_LENGTH ...
随机推荐
- digester解析xml文件
在我们的项目中或多或少会采用xml来做配置文件,你可以采用Java原生支持的sax.DOM或者第三方的dom4j等.虽然提供了各式各样的解析方式,但是解析一个复杂的xml所编写的Java代码是非常麻烦 ...
- oracle锁表问题解决
select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l ...
- OpenStack IceHouse 部署 - 3 - 控制节点部署
Mysql部署配置 安装 安装mysql,mysql的python绑定 apt-get install mysql-server 安装过程中会要求设定mysql的root账户的密码,这里假定设为my ...
- jquery replace方法去空格
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 全面认识Docker和基本指令
Docker逐渐成为虚拟化技术的佼佼者,Java架构师之路接下来会推出一系列的Docker相关技术文章,Docker技术也是架构师的必备技能. 什么是Docker Docker 是一个开源的应用容器引 ...
- jQuery的attr()与prop()的区别
jQuery的attr()与prop()都是用于获取与设置属性的,但它们又各有不同. attr()一般是用于设置默认值,prop()一般是用于设置属性值,即对于像“diabled”,"che ...
- Telnet初试(本地测试)
win7下开启Telnet功能: 控制面板-程序和功能- 开启服务 然后回车 这样即可完成一次请求
- 匿名内部类中关于new Runnable()的使用
匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写. 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 1.继承一个父类的匿名内部类实现 ...
- PGIS大数据量点位显示方案
PGIS大数据量点位显示方案 问题描述 PGIS在地图上显示点位信息时,随点位数量的增加浏览器响应速度会逐渐变慢,当同时显示上千个点时浏览器会变得非常缓慢,以下是进行的测试: 测试环境: 服务器: C ...
- ContentProvider与ContentResolver
使用ContentProvider共享数据: 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据 ...