zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    预热buffer pool
    MySQL · 性能优化· InnoDB buffer pool flush策略漫谈
    事务并发控制
    LOAD DATA INFILE – performance case study
    隐式锁
    percona-xtrabackup安装
    mysql 表空间及索引的查看方法
    mysql用户权限
    mysql修改数据库名
    MySQL对innodb某一个表进行移动
  • 原文地址:https://www.cnblogs.com/JiaJoa/p/6847230.html
Copyright © 2011-2022 走看看