[2017.11.05]正则表达式&集合&list

本文详细介绍了Java中的正则表达式,包括演示、String的split方法、replaceAll方法以及模式和匹配器的使用。接着探讨了集合的由来、特点、与数组的区别,讲解了集合的添加、删除、判断、转换等功能,并通过实例演示了集合的使用。最后,文章聚焦于List集合,阐述了List的有序性、特有的添加、删除、获取和替换功能,并展示了如何使用迭代器遍历List集合。
摘要由CSDN通过智能技术生成

正则表达式

1.演示:

import java.util.Scanner;

/**
 * 需求:校验一个QQ号码
 *      定义一个规则:1)由5到10为组成的数字
 *                2)不能以0开头  
 *  分析:
 *      1)键盘录入一个QQ号码,使用字符串接收
 *      2)定义一个校验QQ的功能
 *      3)在main()中调用返回boolean类型
 * @author Apple
 */
public class RegexDemo {
   

    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收数据
        System.out.println("请您输入一个QQ号码:");
        String QQ = sc.nextLine() ;

        //写一个校验QQ的功能
        boolean flag = checkQQ(QQ) ;
        System.out.println("flag:"+flag);
    }
    /**
     * 两个明确:
     *  明确返回值类型:boolean类型
     * 参数类型:String 输入的qq号码
     */
    public static boolean checkQQ(String qq){
        //假设定义个标记
        boolean flag = true ;
        //需要判断:qq:长度5-10
        if(qq.length()>=5 && qq.length()<=10){
            //符合这个规则
            //符合第一个规则还要符合不能以0开头
            if(!qq.startsWith("0")){
                //符合这个规则
                //这些QQ号码必须还数字的
                //可以先将qq,转换成字符数字
                char[] chs = qq.toCharArray() ;
                //遍历字符数组,获取每一个字符
                for(int x = 0 ; x < chs.length ; x ++){
                    char ch = chs[x] ;

                    //获取到每一个字符,判断该字符是否是数字
                    if(!Character.isDigit(ch)){
                        flag = false ;
                        break ;
                    }
                }
            }else{
                flag = false ;
            }
        }else{
            flag = false ;
        }

        return flag ;
    }
}

改进:

import java.util.Scanner;

/**
 * 需求:校验一个QQ号码
 *      定义一个规则:1)由5到10为组成的数字
 *                2)不能以0开头  
 *  分析:
 *      1)键盘录入一个QQ号码,使用字符串接收
 *      2)定义一个校验QQ的功能
 *      3)在main()中调用返回boolean类型
 * @author Apple
 */
public class RegexDemo2 {
   

    public static void main(String[] args) {

        //创建键盘了录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收数据
        System.out.println("请您输入QQ号码: ");
        String QQ = sc.nextLine() ;
        boolean flag = checkQQ(QQ) ;
        System.out.println("flag: "+flag);
    }

    public static boolean checkQQ(String qq){
        /*//定义正则规则
        String regex = "[1-9][0-9]{4,9}" ;

        //public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 
        boolean flag = qq.matches(regex) ;
        return flag ;*/

        //直接返回
        return qq.matches("[1-9]\\d{4,9}");
    }
}

2.演示:

import java.util.Scanner;

/**
 * 使用正则表达式校验手机号码:
 *      规则:
 *          手机号码:
 *              13689257284
 *              13688886666
 *              13892866555
 *              18992844422
 *              13257222222
 *              ...
 * 
 *1)创建键盘录入对象,录入手机号码
 *2)定义正则规则:
 *3)String类的特有功能
 *          public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 
 *4)输出
 *
 * @author Apple
 */
public class RegexDemo {
   

    public static void main(String[] args) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收
        System.out.println("请您输入一个手机号码:");
        String phone = sc.nextLine() ;

        //定义正则规则
        String regex = "1[38][0-9]{9}" ;

        //匹配当前正则表达式是否和录入的手机号符合
        boolean flag = phone.matches(regex) ;
        System.out.println("flag:"+flag);
    }
}
import java.util.Scanner;

/**
 * 需求:校验邮箱:
 *      QQ邮箱:
 *          919081924@qq.com
 *          fengqingyang@163.com
 *          xxxxx@126.com
 *          zhangsan@westos.com
 *          lisi@sina.com
 *          wangwu@istone.com.cn....
 * 分析:1)键盘录入邮箱
 *      2)定义正则规则
 *      3)使用String中的特有功能校验
 *      4)输出即可
 * @author Apple
 */
public class RegexTest {
   
    public static void main(String[] args) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收
        System.out.println("请您输入一个邮箱:");
        String email = sc.nextLine() ;

        //定义正则规则:本身就是.-->\.--->\\.
//      String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z]{2,3})+" ;
        String regex = "\\w+@\\w{2,6}(\\.[a-zA-Z]{2,3})+" ;

        //校验
        boolean flag = email.matches(regex) ;
        System.out.println("flag:"+flag);
    }
}

3.String的分割功能:
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串
返回值类型是一个字符串数组类型

4.演示:

/*应用场景:
 *        QQ,搜索好友,相亲网:世纪佳缘...
 *          女  "18-24"
 *      String ages = "18-24" ;
 * */

import java.util.Scanner;
public class RegexDemo {

    public static void main(String[] args) {

        //定义一个字符串
        String ages = "18-24" ;

        //定义正则规则
        String regex = "-" ;

        //public String[] split(String regex)
        String[] strArray = ages.split(regex) ;

        //如何得到当前字符数组中的元素(转换int类型的数据)
        int startAge = Integer.parseInt(strArray[0]) ;
        int endAge = Integer.parseInt(strArray[1]) ;

        //键盘录入一个年龄,属于int类型的数据
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收数据
        System.out.println("请您输入一个年龄:");
        int age = sc.nextInt() ;

        //判断是否符我们要找的一类人
        if(age>=startAge && age<=endAge){
            System.out.println("这就是我想要的...");
        }else{
            System.out.println("不是我们要找的...");
        }
    }

}

5.演示:
分割功能的应用:

public class RegexDemo2 {

    public static void main(String[] args) {

        //定义个字符串
        String str1 = "aa,bb,cc" ;
        //使用分割功能
        String[] strArray1 = str1.split(",") ;
        //遍历字符串数组
        for(int x = 0 ; x < strArray1.length; x ++){
            System.out.println(strArray1[x]);
        }

        System.out.println("------------------");

        //字符串:
        String str2 = "aa       bb                    cc" ;
        //使用切割功能:
        String[] strArray2 = str2.split(" +") ;
        for(int x = 0 ; x <strArray2.length ; x++){
            System.out.println(strArray2[x]);
        }

        System.out.println("--------------------");

        String str3 = "aa.bb.cc" ;
        //分割功能
        String[] strArray3 = str3.split("\\.") ;
        for(int x =0 ; x<strArray3.length ; x ++){
            System.out.println(strArray3[x]);
        }

        //硬盘上的路径表现形式:用两个反斜线代表一个反斜线
        //E:\\JavaSE\\JavaCode\\day13
        String str4 = "E:\\JavaSE\\JavaCode\\day13" ;
        //使用分割功能
        String[] strArray4 = str4.split("\\\\") ;
        for(int x = 0 ; x <strArray4.length ; x ++){
            System.out.println(strArray4[x]);
        }
    }
}

6.String类中的替换功能:和正则表达式有关系
public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

7.演示:


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值