java中正则表达式、Pattern和Matcher类、泛型(Generic)

正则表达式

概述: 正确规则的表达式,在java中我们用字符串来表示。
正则表达式的组成规则: 规则字符在java.util.regex Pattern类中
案例演示: 利用正则去校验qq号码,和不利用正则表达式去校验qq号码对比。

public class Demo {
    
    
    public static void main(String[] args) {
    
    
//        校验qq号码.
//        1:要求必须是5-15位数字
//        2:0不能开头

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入qq号码:");
        String qq = scanner.nextLine();
        //使用正则表达式判断
        String regex ="[1-9][0-9]{4,14}";
        boolean b = qq.matches(regex);
        if(b){
    
    
            System.out.println("qq号码输入正确");
        }else
        {
    
    
            System.out.println("qq号码输入错误" );
        }
        //不使用正则表达式判断
        boolean b1=false;
        if(qq.length()>=5&&qq.length()<=15){
    
    
             if(!qq.startsWith("0")){
    
    
                 for (int i = 1; i < qq.length(); i++) {
    
    
                     if(qq.charAt(i)>='0'&&qq.charAt(i)<='9'){
    
    
                         b1=true;
                     }
                     else{
    
    
                         b1=false;
                         break;
                     }
                 }
             }
             else{
    
    
               b1=false;
             }

        }
        else{
    
    
           b1=false;
        }
        if(b1){
    
    
            System.out.println("qq号码输入正确");
        }else
        {
    
    
            System.out.println("qq号码输入错误" );
        }
    }

}

需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”

public class Demo5 {
    
    
    public static void main(String[] args) {
    
    

        String str="91 27 46 38 50";
        String regex=" +";
        String[] strings = str.split(regex);
        int[] ints=new int[strings.length];
        for (int i = 0; i < ints.length; i++) {
    
    
            ints[i]=Integer.valueOf(strings[i]);
        }
        Arrays.sort(ints);
        System.out.println(Arrays.toString(ints));

    }
 }

Pattern和Matcher类

正则的获取功能需要Pattern和Matcher类来获取。
通过JDK提供的API查询Pattern类得到的典型的调用顺序
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(string);
boolean b = m.matches();
案例演示:
需求:获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2 {
    
    
    public static void main(String[] args) {
    
    
//        需求:获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
        da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
        String regex="\\b[a-z]{3}\\b";
        String string="da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(string);
        while(matcher.find()){
    
    
            System.out.println(matcher.group());
        }
    }
}

泛型(Generic)

概述: 是一种把类明确的工作推迟到创建对象,或者调用方法时才去明确的特殊类型。
泛型的格式: <数据类型> 这里的数据类型只能是引用数据类型
泛型好处:
(1): 把运行时期的问题提前到了编译期间
(2): 避免了强制类型转换
(3):优化了程序设计,解决了黄色警告线
注意:泛型只在编译期有效 但在运行期就擦除了

猜你喜欢

转载自blog.csdn.net/weixin_42093672/article/details/102963456