Java字符串的匹配问题,String类的matches方法与Matcher类的matches方法的使用比较,Matcher类的matches()、find()和lookingAt()方法的使用比较
参考网上相关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()方法的使用比较的更多相关文章
- 【转】Java 字符串常用操作(String类)
原文网址:http://www.cnblogs.com/freeabyss/archive/2013/05/15/3187057.html 字符串查找 String提供了两种查找字符串的方法,即ind ...
- Java 字符串常用操作(String类)
字符串查找 String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法. 1.indexOf(String s) 该方法用于返回参数字符串s在指定字符串中首次出现的索引位置, ...
- java字符串格式化性能对比String.format/StringBuilder/+拼接
String.format由于每次都有生成一个Formatter对象,因此速度会比较慢,在大数据量需要格式化处理的时候,避免使用String.format进行格式化,相反使用StringUtils.l ...
- java 字符串为空问题
java 字符串为空问题 String testStr = null; System.out.println(testStr); if (testStr == null) { System.out.p ...
- oracle文字与格式字符串不匹配的解决
oracle文字与格式字符串不匹配的解决 oracle的日期时间类型 在往oracle的date类型插入数据的时候,记得要用to_date()方法. 如insert into CUSLOGS(STAR ...
- Java字符串String类操作方法详细整理
关于String类的基本操作,可分为以下几类: 1.基本操作方法 2.字符串比较 3.字符串与其他数据类型之间的转换 4.字符与字符串的查找 5.字符串的截取与拆分 6.字符串的替换与修改 我觉得在整 ...
- Java String类相关知识梳理(含字符串常量池(String Pool)知识)
目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...
- Java学习笔记21(String类补充:正则表达式)
正如python的re模块,不过Java和Python的正则表达式有一些区别,这里做简单介绍,具体的细节可以参考网上其他的文章: 功能:可以用于检验一个字符串,比如验证用户名,验证密码格式,验证是否是 ...
- java 字符串String
在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象的方法: 只要是双引号标 ...
随机推荐
- koa/redux middleware系统解析
middleware 对于现有的一些框架比如koa,express,redux,都需要对数据流进行一些处理,比如koa,express的请求数据处理,包括json.stringify,logger,或 ...
- jQuery方法输出有几个checkbox框被选中
每选中一个多选框,输出有多少个选中 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- redis info 命令详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt119 Redis Info 命令以一种易于理解和阅读的格式,返回关于 Red ...
- Maven Scope取值的含义
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt257 maven依赖关系中Scope的作用 Dependency Scope ...
- hdu 3549最大流Ford-Fulkerson算法
Ford-Fulkerson算法 戳戳http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html Ford-Fulkerson方法依 ...
- 整个IT界可分为13块大领域
IT界可以划分为13个领域 Location: NanJing
- mysql 5.7 Warning: Using a password on the command line interface can be insecure. 解决方案
百度了好多,发现都是lunix环境下的,没有找到windows和OS 的,在lunix环境下的解决方案一般就是修改数据库配置文件 my.conf 在Windows 中是没有my.cnf 文件,而是叫做 ...
- 201521123103 《Java学习笔记》 第五次学习总结
一.本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. (1).接口更灵活.更方便,可以方便的为现有的系统添加新的功能. (2).is-a ...
- 201521123038 《Java程序设计》 第二周学习总结
201521123038 <Java程序设计> 第二周学习总结 1.本章学习总结 学会在Java程序中使用函数,使程序层次更清晰 使用StringBuilder编写代码,减少内存空间的占用 ...
- 201521123070 《JAVA程序设计》第2周学习总结
1. 本章学习总结 1.学习了string类: 2.了解了ArrayList的特性和使用方法: 3.学习了类名包名. 2. 书面作业 Q1.使用Eclipse关联jdk源代码(截图),并查看Strin ...