参考网上相关blog,对Java字符串的匹配问题进行了简单的比较和总结,主要对String类的matches方法与Matcher类的matches方法进行了比较。

对Matcher类的matches()、find()和lookingAt()三个容易混淆的方向进行了比较说明。

在这里对参考的相关blog的原创者一并谢过,谢谢!

话不多说,呈上代码:

 /**
* 判断一个字符串是否包含数字;是否只含数字;输出匹配到的字串
* @author JiaJoa
*
*/
public class StringIsDigit { public static void main(String[] args) {
String str = "2017花花0512麻麻";
System.out.println(stringContainDigit(str)); //true
System.out.println(stringIsAllDigit(str)); //false
System.out.println(stringIsAllDigit1(str)); //false
System.out.println(stringIsAllDigit2(str)); //false
System.out.println(stringIsAllDigit3(str)); //false
System.out.println(getMatchGroup(str)); //2017 0512
} //使用String matches方法结合正则表达式一个字符串是否包含数字
public static boolean stringContainDigit(String str){
String regex = ".*\\d+.*"; //判断是否包含字母,改为 .*[a-zA-Z]+.* 是否包含汉字改为 .*[\u4e00-\u9fa5].*
return str.matches(regex);
} //使用Character类的isDigit方法判断一个字符串是否只包含数字
public static boolean stringIsAllDigit(String str){
for(int i=0;i<str.length();i++){
if(!Character.isDigit(str.charAt(i)))
return false;
}
return true;
} //使用0-9对应的ASCII码范围判断一个字符串是否只包含数字
public static boolean stringIsAllDigit1(String str){
for(int i=0;i<str.length();i++){
int charn = str.charAt(i);
if(charn<48||charn>58){
return false;
}
}
return true;
} //使用String类的matches方法判断一个字符串是否只包含数字
public static boolean stringIsAllDigit2(String str){
String regex = "\\d+";
return str.matches(regex);
} //使用Matcher类的matches方法判断一个字符串是否只包含数字
public static boolean stringIsAllDigit3(String str){
String regex = "[0-9]+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher((CharSequence)str);
return matcher.matches(); //matcher.matches()是全匹配,而matcher.find()是找到符合条件的匹配就返回true
} //使用Matcher类的group方法输出匹配到的结果串
public static String getMatchGroup(String str){
String regex = "[0-9]+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher((CharSequence)str);
StringBuilder sb = new StringBuilder(); /*
* matcher.matches()是全匹配,只有整个匹配串完全匹配才返回true,如果前部分匹配成功,会继续匹配剩下的位置。
* matcher.find()是部分匹配,找到一个匹配字串后,将移动下次匹配直到匹配串尾部
* matcher.lookingAt()是部分匹配,从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配
*/
while(matcher.find()){
sb.append(matcher.group()+" ");
}
return sb.toString();
} }

Java字符串的匹配问题,String类的matches方法与Matcher类的matches方法的使用比较,Matcher类的matches()、find()和lookingAt()方法的使用比较的更多相关文章

  1. 【转】Java 字符串常用操作(String类)

    原文网址:http://www.cnblogs.com/freeabyss/archive/2013/05/15/3187057.html 字符串查找 String提供了两种查找字符串的方法,即ind ...

  2. Java 字符串常用操作(String类)

    字符串查找 String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法. 1.indexOf(String s) 该方法用于返回参数字符串s在指定字符串中首次出现的索引位置, ...

  3. java字符串格式化性能对比String.format/StringBuilder/+拼接

    String.format由于每次都有生成一个Formatter对象,因此速度会比较慢,在大数据量需要格式化处理的时候,避免使用String.format进行格式化,相反使用StringUtils.l ...

  4. java 字符串为空问题

    java 字符串为空问题 String testStr = null; System.out.println(testStr); if (testStr == null) { System.out.p ...

  5. oracle文字与格式字符串不匹配的解决

    oracle文字与格式字符串不匹配的解决 oracle的日期时间类型 在往oracle的date类型插入数据的时候,记得要用to_date()方法. 如insert into CUSLOGS(STAR ...

  6. Java字符串String类操作方法详细整理

    关于String类的基本操作,可分为以下几类: 1.基本操作方法 2.字符串比较 3.字符串与其他数据类型之间的转换 4.字符与字符串的查找 5.字符串的截取与拆分 6.字符串的替换与修改 我觉得在整 ...

  7. Java String类相关知识梳理(含字符串常量池(String Pool)知识)

    目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...

  8. Java学习笔记21(String类补充:正则表达式)

    正如python的re模块,不过Java和Python的正则表达式有一些区别,这里做简单介绍,具体的细节可以参考网上其他的文章: 功能:可以用于检验一个字符串,比如验证用户名,验证密码格式,验证是否是 ...

  9. java 字符串String

    在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象的方法: 只要是双引号标 ...

随机推荐

  1. PHP常量定义define与const

    一.const PHP5.3以前,const只能在类内部声明变量,5.3+允许在外部声明变量,但还不能使用常量计算! const ONE = 1; const WORD = 'hello world' ...

  2. kindeditor上传图片时候,上传成功了,但是页面上却提示失败

    今天尝试着kindeditor做一个上传demo,碰到了一个日狗的问题,百度谷歌都没有答案,最后查看源码才发现问题所在,记录一下,福利大众. 碰到问题如下,图片后台明明上传成功了,返回信息也是正确的, ...

  3. Scrapy 爬虫入门 +实战

    爬虫,其实很早就有涉及到这个点,但是一直没有深入,今天来搞爬虫.选择了,scrapy这个框架 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tut ...

  4. 如何使用Git和码云Git@OSC

    1.Git简介 关于Git是什么,阅读博客Git简介 2.Git 基础 Git命令很多,常用命令如下图 Workspace:工作区 Index/Stage :暂存区 Local Repository: ...

  5. 201521123082《Java程序设计》第3周学习总结

    201521123082<Java程序设计>第3周学习总结 标签(空格分隔): Java 1.本周学习总结 XMind图: 2.书面作业 Q1.代码阅读 public class Test ...

  6. 201521123099 《Java程序设计》第八周学习总结

    1. 本周学习总结 2. 书面作业 本次作业题集集合 List中指定元素的删除(题目4-1) 1.1 实验总结 老师上课解释的还有私下问同学大概能懂.主要理解到一点在删除List中元素时要考虑元素删除 ...

  7. 201521123044 《Java程序设计》第6周学习总结

    1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  8. 201521123111《Java程序设计》第6周学习总结

    1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  9. 201521123048 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法 ...

  10. Win8打开chm右侧空白解决方法

    Win8下打开CHM文件,左侧有目录,但是右侧空白.而且打开的时候,还弹出很多IE窗口. 感觉应该不是文件本身的问题.下面是我的解决方法,其他系统也可以试一试. 最初打开文件如下 首先:1,右键关联c ...