• 常见对象(正则表达式的概述和简单使用)


    正则表达式

    • 是指一个用来描述或者匹配一系列复合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
    • 作用:比如注册邮箱,邮箱有用户名和密码,一般对其限制长度,这个限制长度的事情就是正则表达式做的。
    public class Test04 {
        public static void main(String[] args) {
    //        System.out.println(checkQQ("962702847"));
            
    //        \d任意数字字符    正则表达式
            String regex = "[1 - 9]\d{4,14}";
            System.out.println("2553868".matches(regex));
            /**
             * 1>校验qq号
             * 2>要求必须是5到15位
             * 3>0不能开头
             * 4>必须都是数字
             *a:明确返回值类型boolean
             *b:明确参数列表String qq
             */
        }    
            //常规方法
            public static boolean checkQQ(String qq) {
                boolean flag = true;//如果校验qq不符合要求,就把flag设为false,如果符合要求就直接返回
                if(qq.length() >= 5 && qq.length() <= 15) {
                    if(!qq.startsWith("0")) {
                        char[] arr = qq.toCharArray();    //将字符串转换成字符数组
                        for (int i = 0; i < arr.length; i++) {
                            char ch = arr[i];    //记录每一个字符
                            if(!(ch >= '0' && ch <= '9')) {
                                flag = false;    //不是数字
                                break;
                            }
                        }
                    }else {
                        flag = false;    //以0开头,不符合qq标准
                    }
                }else {
                    flag = false;    //长度不符合
                }
                return flag;
            }
        
    }

    正则表达式的分割功能

    public class Test05 {
        public static void main(String[] args) {
            String s = "你好.世界.中国";
            String[] arr = s.split("\.");    //通过正则表达式分割字符串
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    }

    把给定字符串中的数字排序:

    • 将字符串切割成字符数组
    • 将字符串转换成数字并将其存储在一个等长度的int数组中
    • 排序
    • 将排序后的结果遍历并拼接成一个字符串
    public class Test07 {
        public static void main(String[] args) {
            String s = "91 27 46 38 50";
            //将字符串切割成字符串数组
            String[] sArr = s.split(" ");
            //将字符串转成数字并将其存储在一个等长度的int数组中
            int[] arr = new int[sArr.length];
            for (int i = 0; i < arr.length; i++) {
                //将数组字符串转换成数字
                arr[i] = Integer.parseInt(sArr[i]);
            }
            //排序
            Arrays.sort(arr);
            
            //将排序后的结果遍历凭接成一个字符串(以下两种方式)
    //        String str = "";
    //        for (int i = 0; i < arr.length; i++) {
    //            if(i == arr.length - 1) {
    //                str = str + arr[i];
    //            }else {
    //                str = str + arr[i] + " ";
    //            }
    //        }
    //        System.out.println(str);
            
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < arr.length; i++) {
                if(i == arr.length - 1) {
                    sb.append(arr[i]);
                }else {
                    sb.append(arr[i] + " ");
                }
            }
            System.out.println(sb);
        }
    }

    正则表达式的替换功能:

    public class Test08 {
        public static void main(String[] args) {
            String s = "wo33ai222hei";
            String regex = "\d"; //  \d代表的任意数字
            
            String s2 = s.replaceAll(regex, "");
            System.out.println(s2);
        }
    }

    正则表达式的分组功能

    public class Test09 {
        public static void main(String[] args) {
            //叠词 快快乐乐 高高兴兴
    //        String regex = "(.)\1(.)\2";  //  \1代表第一组又出现一次  \2代表第二组又出现一次
    //        System.out.println("快快乐乐".matches(regex));
            
            //叠词 快乐快乐
    //        String regex2 = "(..)\1";
    //        System.out.println("快乐快乐".matches(regex2));
            
            //按照叠词切割:"sdqqfgkkhjppppkl";
    //        String s = "sdqqfgkkkhjppppkl";
    //        String regex = "(.)\1+";        //+代表第一组出现一次到多次
    //        String[] arr = s.split(regex);
    //        for (int i = 0; i < arr.length; i++) {
    //            System.out.println(arr[i]);
    //        }
            //需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
            //将字符串还原成:“我要学编程”。
            String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
            String s2 = s.replaceAll("\.+","" );
            String s3 = s2.replaceAll("(.)\1+", "$1");//$1代表第一组中的内容
            System.out.println(s3);
        }
    }
  • 相关阅读:
    Good Bye 2014 B. New Year Permutation(floyd )
    hdu 5147 Sequence II (树状数组 求逆序数)
    POJ 1696 Space Ant (极角排序)
    POJ 2398 Toy Storage (叉积判断点和线段的关系)
    hdu 2897 邂逅明下 (简单巴什博弈)
    poj 1410 Intersection (判断线段与矩形相交 判线段相交)
    HDU 3400 Line belt (三分嵌套)
    Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)
    Codeforces Round #179 (Div. 2) B. Yaroslav and Two Strings (容斥原理)
    hdu 1576 A/B (求逆元)
  • 原文地址:https://www.cnblogs.com/happystudyhuan/p/10735322.html
Copyright © 2020-2023  润新知