zoukankan      html  css  js  c++  java
  • java 中使用正则表达式操作字符串

    import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.StringSelection;
    import java.awt.datatransfer.Transferable;
    import java.util.ArrayList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class TestMain
    {
        /**
         * arivate1
         * brivate1
         * crivate1
         * drivate
         * erivate
         * go go
         * kitty kitty
         */
        public static void main(String[] args) throws Exception
        {
            Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            String clipboardText = getClipboardText(systemClipboard);
            Pattern rule = Pattern.compile("[1-9]+\.[0-9]+");
            Matcher matcher = rule.matcher(clipboardText);
    //        System.out.println(matcher.matches());
    //        System.out.println(matcher.groupCount());
            ArrayList<String> strs = new ArrayList<String>();
            Double total = 0.0;
            while (matcher.find()) {
                strs.add(matcher.group(0));            
            }
            System.out.println("加班时数: ");
            for (String s : strs){
                Double i = Double.parseDouble(s);
                System.out.print(i + ", ");
                total +=i;
            }
            System.out.println();
            System.out.println("加班总时数: " +total);
        }
        
        public static void test(){
            getStrings(); //用正则表达式获取指定字符串内容中的指定内容
            System.out.println("********************");
            replace(); //用正则表达式替换字符串内容
            System.out.println("********************");
            strSplit(); //使用正则表达式切割字符串
            System.out.println("********************");
            strMatch(); //字符串匹配
        }
    
        /*
         * Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统, 
         * 本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造; 
         * 系统剪切板通过 Clipboard sysc =
         * Toolkit.getDefaultToolkit().getSystemClipboard(); 
         * 获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据 1. 从指定的剪切板中获取文本内容
         */
        protected static String getClipboardText(Clipboard clip) throws Exception
        {
            // 获取剪切板中的内容
            Transferable clipT = clip.getContents(null);
            if (clipT != null)
            {
                // 检查内容是否是文本类型
                if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor)) return (String) clipT.getTransferData(DataFlavor.stringFlavor);
            }
            return null;
        }
    
        // 2. 往剪切板写文本数据
        protected static void setClipboardText(Clipboard clip, String writeMe)
        {
            Transferable tText = new StringSelection(writeMe);
            clip.setContents(tText, null);
        }
        /**
         * 字符串匹配
         */
        private static void strMatch() {
            String phone = "13539770000";
            //检查phone是否是合格的手机号(标准:1开头,第二位为3,5,8,后9位为任意数字)
            System.out.println(phone + ":" + phone.matches("1[358][0-9]{9,9}")); //true    
            
            String str = "abcd12345efghijklmn";
            //检查str中间是否包含12345
            System.out.println(str + ":" + str.matches("\w+12345\w+")); //true
            System.out.println(str + ":" + str.matches("\w+123456\w+")); //false
        }
    
        /**
         * 使用正则表达式切割字符串
         */
        private static void strSplit() {
            String str = "asfasf.sdfsaf.sdfsdfas.asdfasfdasfd.wrqwrwqer.asfsafasf.safgfdgdsg";
            String[] strs = str.split("\.");
            for (String s : strs){
                System.out.println(s);
            }        
        }
    
        /**
         * 用正则表达式获取指定字符串内容中的指定内容
         */
        private static void getStrings() {
            String str = "rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf";
            Pattern p = Pattern.compile("qq(.*?)qq");
            Matcher m = p.matcher(str);
            ArrayList<String> strs = new ArrayList<String>();
            while (m.find()) {
                strs.add(m.group(1));            
            } 
            for (String s : strs){
                System.out.println(s);
            }        
        }
    
        /**
         * 用正则表达式替换字符串内容
         */
        private static void replace() {
            String str = "asfas5fsaf5s4fs6af.sdaf.asf.wqre.qwr.fdsf.asf.asf.asf";
            //将字符串中的.替换成_,因为.是特殊字符,所以要用.表达,又因为是特殊字符,所以要用\.来表达.
            str = str.replaceAll("\.", "_");
            System.out.println(str);        
        }
    
    }
  • 相关阅读:
    hdu 4476 Cut the rope (2-pointer && simulation)
    hdu 1286 找新朋友 (容斥原理 || 欧拉函数)
    函数存储的另一种思路
    grunt 入门 应用grunt对代码进行压缩
    sublime flatLand 主题
    如何应用r.js对requirejs下的js代码合并
    如何在requirejs下引用bootstrap
    学习在requirejs下如何使用underscore.js模板
    应用js函数柯里化currying 与ajax 局部刷新dom
    js 函数arguments一种用法
  • 原文地址:https://www.cnblogs.com/hoonick/p/9843226.html
Copyright © 2011-2022 走看看