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

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

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

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

话不多说,呈上代码:

 1 /**
 2  * 判断一个字符串是否包含数字;是否只含数字;输出匹配到的字串
 3  * @author JiaJoa
 4  * 
 5  */
 6 public class StringIsDigit {
 7 
 8     public static void main(String[] args) {
 9         String str = "2017花花0512麻麻";
10         System.out.println(stringContainDigit(str));  //true
11         System.out.println(stringIsAllDigit(str));  //false
12         System.out.println(stringIsAllDigit1(str)); //false
13         System.out.println(stringIsAllDigit2(str)); //false
14         System.out.println(stringIsAllDigit3(str)); //false
15         System.out.println(getMatchGroup(str));   //2017 0512
16     }
17     
18     
19     //使用String matches方法结合正则表达式一个字符串是否包含数字
20     public static boolean stringContainDigit(String str){
21         String regex  = ".*\\d+.*"; //判断是否包含字母,改为 .*[a-zA-Z]+.*  是否包含汉字改为 .*[\u4e00-\u9fa5].*
22         return str.matches(regex);
23     }
24     
25     
26     //使用Character类的isDigit方法判断一个字符串是否只包含数字
27     public static boolean stringIsAllDigit(String str){
28         for(int i=0;i<str.length();i++){
29             if(!Character.isDigit(str.charAt(i)))
30                 return false;
31         }
32         return true;
33     }
34     
35     //使用0-9对应的ASCII码范围判断一个字符串是否只包含数字
36     public static boolean stringIsAllDigit1(String str){
37         for(int i=0;i<str.length();i++){
38             int charn = str.charAt(i);
39             if(charn<48||charn>58){
40                 return false;
41             }
42         }
43         return true;
44     }
45     
46     
47     //使用String类的matches方法判断一个字符串是否只包含数字
48     public static boolean stringIsAllDigit2(String str){
49         String regex = "\\d+";
50         return str.matches(regex);
51     }
52     
53     //使用Matcher类的matches方法判断一个字符串是否只包含数字
54     public static boolean stringIsAllDigit3(String str){
55         String regex = "[0-9]+";
56         Pattern pattern = Pattern.compile(regex);
57         Matcher matcher = pattern.matcher((CharSequence)str);
58         return matcher.matches();  //matcher.matches()是全匹配,而matcher.find()是找到符合条件的匹配就返回true
59     }
60     
61     //使用Matcher类的group方法输出匹配到的结果串
62     public static String getMatchGroup(String str){
63         String regex = "[0-9]+";
64         Pattern pattern = Pattern.compile(regex);
65         Matcher matcher = pattern.matcher((CharSequence)str);
66         StringBuilder sb = new StringBuilder();
67         
68         /* 
69          * matcher.matches()是全匹配,只有整个匹配串完全匹配才返回true,如果前部分匹配成功,会继续匹配剩下的位置。
70          * matcher.find()是部分匹配,找到一个匹配字串后,将移动下次匹配直到匹配串尾部
71          * matcher.lookingAt()是部分匹配,从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配
72          */
73         while(matcher.find()){   
74             sb.append(matcher.group()+" ");
75         }
76         return sb.toString();
77     }
78     
79 }

 

posted @ 2017-05-12 21:04  JiaJoa  阅读(865)  评论(0编辑  收藏  举报