• 常用工具类2


    10. Formatter类的简单使用

    例1. Formatter简单输出示例。

    package util;
    import java.util.*;
    public class demoFormatter {
    
        public static void main(String[] args) {
            //以标准输出设备为目标,创建对象
            Formatter fmt = new Formatter(System.out);
            //格式化输出数据,并输出到标准输出设备
            fmt.format("直接输出,每个输出项占8个字符位:%8d%8d
    ",100,200);
            StringBuffer buf = new StringBuffer();
            //以指定的字符串为目标,创建对象
            fmt = new Formatter(buf);
            //格式化输出数据,输出到buf中
            fmt.format("输出到指定的缓冲区,每个输出项占6个字符位:%6d%6d
    ", 300,400);
            //再从buf中输出到屏幕
            System.out.print(buf);
            //以默认的存储区为目标,创建对象
            fmt = new Formatter();
            //格式化输出数据,输出到自己的缓冲区
            fmt.format("输出到自己的缓冲区,每个输出项占10个字符位:%10.3f%10.3f", 123.45,43.687);
            //再从对象的存储区中输出到屏幕
            System.out.println(fmt);
        }
    
    }

    程序运行结果如下:

    直接输出,每个输出项占8个字符位:     100     200
    输出到指定的缓冲区,每个输出项占6个字符位:   300   400
    输出到自己的缓冲区,每个输出项占10个字符位:   123.450    43.687

    11. 时间格式转换符详解

    例2. 使用时间格式转换符输出日期和时间。

    package util;
    import java.util.*;
    public class demoFmtTime {
    
        public static void main(String[] args) {
            Formatter fmt = new Formatter(System.out);
            Date dt = new Date();
            fmt.format("现在的日期和时间(以默认的完整格式):%tc
    ", dt);
            fmt.format("今天的日期(按中国习惯):%1$tY-%1$tm-%1$td
    ", dt);
            fmt.format("今天是:%tA
    ", dt);
            fmt.format("现在的时间(24小时制):%tT
    ", dt);
            fmt.format("现在的时间(12小时制):%tr
    ", dt);
            fmt.format("现在是:%tH点%1$tM分%1$tS秒", dt);
        }
    
    }

    程序运行结果如下:

    现在的日期和时间(以默认的完整格式):星期六 一月 24 14:25:35 CST 2015
    今天的日期(按中国习惯):2015-01-24
    今天是:星期六
    现在的时间(24小时制):14:25:35
    现在的时间(12小时制):02:25:35 下午
    现在是:14点25分35秒

    12. Pattern类的使用

    例3. Pattern使用示例。

    package util;
    
    import java.util.regex.Pattern;
    
    public class demoPattern_1 {
        static String text ="Kevin has seen 《LEON》several times, because it is a good film."+"/凯文已经看过《这个杀手不太冷》几次了,因为它是一部好电影。/名词:凯文。";
        public static void main(String[] args) {
            Pattern p = Pattern.compile("[/]+");
            String[] result = p.split(text);
            for(int i=0;i<result.length;i++)
                System.out.println(result[i]);
        }
    
    }

    程序运行结果如下:

    Kevin has seen 《LEON》several times, because it is a good film.
    凯文已经看过《这个杀手不太冷》几次了,因为它是一部好电影。
    名词:凯文。

    指定分段的段数:

    package util;
    
    import java.util.regex.Pattern;
    
    public class demoPattern_2 {
        static String text ="Kevin has seen 《LEON》several times, because it is a good film."+"/凯文已经看过《这个杀手不太冷》几次了,因为它是一部好电影。/名词:凯文。";
        public static void main(String[] args) {
            Pattern p = Pattern.compile("[/]+");
            String[] result = p.split(text,2);
            for(int i=0;i<result.length;i++)
                System.out.println(result[i]);
        }
    }

    程序运行结果如下:

    Kevin has seen 《LEON》several times, because it is a good film.
    凯文已经看过《这个杀手不太冷》几次了,因为它是一部好电影。/名词:凯文。

    13. Matcher类的使用

    Matcher类需要配合Pattern使用。他没有提供构造方法,因为必须用Pattern对象来创建Matcher对象。

    例4. 匹配方法使用示例。

    package util;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class demoMatching {
        static String text = "This is a test string.";
        public static void main(String[] args) {
            Pattern p = Pattern.compile("\bTh");
            Matcher m = p.matcher(text);
            System.out.println("正文串:"+text);
            System.out.println("表达式:"+"\bTh");
            System.out.println("整个正文串的匹配结果:"+m.matches());
            System.out.println("字串匹配结果:"+m.find());
            System.out.println("匹配正文串的起始部分:"+m.lookingAt());
    
        }
    
    }

    程序运行结果:

    正文串:This is a test string.
    表达式:Th
    整个正文串的匹配结果:false
    字串匹配结果:true
    匹配正文串的起始部分:true

    14. 替换方法的使用

    例5. 将把句子里的”Kelvin“改为"Kevin"。

    package util;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class demoReplace {
    
        public static void main(String[] args) {
            String text = "Kelvin Li and Kelvin Chan are both working in Kelvin"+
        "Chen's KelvinSoftShop company";
            Pattern p = Pattern.compile("Kelvin");
            Matcher m = p.matcher(text);
            StringBuffer sb = new StringBuffer();
            int cnt = 0;
            boolean result;
            while(m.find()){
                m.appendReplacement(sb, "Kevin");
                cnt++;
                System.out.println("第"+cnt+"次匹配sb的内容是:"+sb);
            }
            m.appendTail(sb);
            System.out.println("调用m.appendTail(sb)后sb的最终内容是:"+sb);
        }
    
    }

    程序运行结果如下:

    第1次匹配sb的内容是:Kevin
    第2次匹配sb的内容是:Kevin Li and Kevin
    第3次匹配sb的内容是:Kevin Li and Kevin Chan are both working in Kevin
    第4次匹配sb的内容是:Kevin Li and Kevin Chan are both working in KevinChen's Kevin
    调用m.appendTail(sb)后sb的最终内容是:Kevin Li and Kevin Chan are both working in KevinChen's KevinSoftShop company

    更为简洁的方法:

    import java.util.regex.Pattern;
    
    public class demoReplace {
    
        public static void main(String[] args) {
            String text = "Kelvin Li and Kelvin Chan are both working in Kelvin"+
        "Chen's KelvinSoftShop company";
            Pattern p = Pattern.compile("Kelvin");
            Matcher m = p.matcher(text);
            text = m.replaceAll("Kevin");
            System.out.println("替换后为:"+text);
    //        StringBuffer sb = new StringBuffer();
    //        int cnt = 0;
    //        boolean result;
    //        while(m.find()){
    //            m.appendReplacement(sb, "Kevin");
    //            cnt++;
    //            System.out.println("第"+cnt+"次匹配sb的内容是:"+sb);
    //        }
    //        m.appendTail(sb);
    //        System.out.println("调用m.appendTail(sb)后sb的最终内容是:"+sb);
        }
    
    }

    输出结果为:

    替换后为:Kevin Li and Kevin Chan are both working in KevinChen's KevinSoftShop company

    15. 组匹配的使用

    例6. 组匹配使用示例。

    import java.util.regex.Pattern;
    
    public class demoGroup {
    
        public static void main(String[] args) {
            String text = "REP_0_12_4567";
            String rex = "(REP_(\d{1})_(\d{1,2})(_(\d{1}))?)";
            String result[];
            Pattern pTest = Pattern.compile(rex);
            Matcher m = pTest.matcher(text);
            if(m.find()){
                int cnt = m.groupCount(); //获取匹配组数目
                result = new String[cnt+1];
                for(int i=1;i<=cnt;i++){
                    result[i]=m.group(i);
                    System.out.println("第"+i+"组:"+result[i]);
                }
            }else{
                System.out.println("匹配不成功");
            }
    
        }
    
    }

    程序结果为:

    第1组:REP_0_12_4
    第2组:0
    第3组:12
    第4组:_4
    第5组:4

    16. 检验Email的合法性

    例7. 利用正则表达式检验Email的合法性。

    package util;
    
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class checkEmail {
    
        public static void main(String[] args) {
            // 命令的第一个参数是为要检测的Email地址
    //        String input = args[0];
            Scanner in = new Scanner(System.in);
            System.out.println("请输入Email地址:");
            String input = in.nextLine();
            in.close();
            // 检测输入的Email地址是否以非法符号"."或"@"作为起始字符
            Pattern p = Pattern.compile("^\.|^\@");
            Matcher m = p.matcher(input);
            if(m.find())
                System.out.println("Email地址不能以'.'或‘@'作为起始字符");
            //检测是否以"www."为起始
            p = Pattern.compile("^www\.");
            m = p.matcher(input);
            if(m.find())
                System.out.println("Email地址不能以’www.‘起始");
            //检测是否包含非法字符
            p = Pattern.compile("[^A-Za-z0-9\.\@_\-~#]+");
            m = p.matcher(input);
            StringBuffer sb = new StringBuffer();
            boolean result = m.find();
            boolean deletedIllegalChars = false;
            while(result){
                //如果找到了非法字符,那么就设下标记
                deletedIllegalChars = true;
                //如果里面包含非法字符,如冒号双引号等,那么就把它们消去,加到sb里面
                m.appendReplacement(sb, "");
                result = m.find();
            }
            m.appendTail(sb);
            String input1 = sb.toString();
            if(deletedIllegalChars){
                System.out.println("输入的Email地址里包含有冒号、逗号等非法字符,请修改");
        //        System.out.println("您现在的输入为:"+args[0]);
                System.out.println("您现在的输入为:"+input);
                System.out.println("修改后合法的地址应类似:"+input1);
            }
        }
    
    }

    程序运行结果为:

    请输入Email地址:
    myEmail$:@gmail.com
    输入的Email地址里包含有冒号、逗号等非法字符,请修改
    您现在的输入为:myEmail$:@gmail.com
    修改后合法的地址应类似:myEmail@gmail.com
    请输入Email地址:
    www.baidu.com@sina.com
    Email地址不能以’www.‘起始
    请输入Email地址:
    guanlei@123.com
  • 相关阅读:
    js面向对象实现Tab切换
    js中的面向对象基础1
    js正则表达式
    Ajax的基础使用
    JS完美运动框架
    JS实现链式运动
    js实现多物体运动框架
    js实现多物体运动
    JS运动应用
    JavaScript中的高阶函数
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4246042.html
Copyright © 2020-2023  润新知