myjavaBlog

          工作越努力學到的越多。
          posts - 4, comments - 7, trackbacks - 0, articles - 34

          正則表達式截取字符串并用指定值替換

          Posted on 2009-07-20 08:50 java人生 閱讀(1484) 評論(0)  編輯  收藏 所屬分類: javaSE
          自己用java做了一個類似紅蜻蜓截圖的軟件,里面要制作文件命名的模板,
          如:

             #aa##bb###
           #為需要用指定序號替換的字符,10起始值
          連續#個數小于等于起始值位數,#被起始值直接替換
          連續#個數大于起始值位數時,#被起始值替換并且多出的#用0替換
            1import java.util.regex.Matcher;
            2import java.util.regex.Pattern;
            3
            4
            5public class Test {
            6
            7    public static void main(String[] args) {
            8        String template = "#a##b###c";
            9        String show1 = null, show2 = null, show3 = null;
           10        int start = 10;
           11        String startStr = String.valueOf(start);
           12
           13        String regex = "#{1,}";
           14        String[] splitStr = template.split(regex);
           15        if (template.indexOf("#"== -1{
           16            show1 = template + start;
           17            show2 = template + (start + 1);
           18            show3 = template + (start + 2);
           19        }
           else {
           20            if (splitStr.length == 0{
           21                if (String.valueOf(start).length() >= template.length())
           22                    show1 = String.valueOf(start);
           23                else {
           24                    String s = template.substring(0, template.length()
           25                            - String.valueOf(start).length());
           26                    show1 = (s + start).replace("#""0");
           27                }

           28                if (String.valueOf(start + 1).length() >= template.length()) {
           29                    show2 = String.valueOf(start + 1);
           30                }
           else {
           31                    String s = template.substring(0, template.length()
           32                            - String.valueOf(start + 1).length());
           33                    show2 = (s + (start + 1)).replace("#""0");
           34                }

           35                if (String.valueOf(start + 2).length() >= template.length()) {
           36                    show3 = String.valueOf(start + 2);
           37                }
           else {
           38                    String s = template.substring(0, template.length()
           39                            - String.valueOf(start + 2).length());
           40                    show3 = (s + (start + 2)).replace("#""0");
           41                }

           42            }
           else {
           43                Pattern pattern = Pattern.compile(regex);
           44                Matcher match = pattern.matcher(template);
           45
           46                StringBuffer buffer1 = new StringBuffer();
           47                StringBuffer buffer2 = new StringBuffer();
           48                StringBuffer buffer3 = new StringBuffer();
           49
           50                int index = 0;
           51                while (match.find()) {
           52                    String rules = match.group();
           53                    buffer1.append(splitStr[index]);
           54                    buffer2.append(splitStr[index]);
           55                    buffer3.append(splitStr[index]);
           56
           57                    if (rules.length() <= String.valueOf(start).length()) {
           58                        buffer1.append(start);
           59                    }
           else {
           60                        String s = rules.substring(0, rules.length()
           61                                - startStr.length());
           62
           63                        buffer1.append((s + start).replace("#""0"));
           64                    }

           65                    if (rules.length() <= String.valueOf(start + 1).length()) {
           66                        buffer2.append(start + 1);
           67                    }
           else {
           68                        String s = rules.substring(0, rules.length()
           69                                - String.valueOf(start + 1).length());
           70                        String tmp2 = (s + (start + 1)).replace("#""0");
           71
           72                        buffer2.append(tmp2);
           73                    }

           74                    if (rules.length() <= String.valueOf(start + 2).length()) {
           75                        buffer3.append(start + 2);
           76                    }
           else {
           77                        String s = rules.substring(0, rules.length()
           78                                - String.valueOf(start + 1).length());
           79                        String tmp3 = (s + (start + 2)).replace("#""0");
           80
           81                        buffer3.append(tmp3);
           82                    }

           83                    index++;
           84                }

           85                if (index < splitStr.length) {
           86                    buffer1.append(splitStr[index]);
           87                    buffer2.append(splitStr[index]);
           88                    buffer3.append(splitStr[index]);
           89                }

           90                show1 = buffer1.toString();
           91                show2 = buffer2.toString();
           92                show3 = buffer3.toString();
           93            }

           94        }

           95        System.out.println("show1: "+show1);
           96        System.out.println("show2: "+show2);
           97        System.out.println("show3: "+show3);
           98    }

           99}

          100
          主站蜘蛛池模板: 霍邱县| 平和县| 濮阳市| 衡水市| 长顺县| 九寨沟县| 大姚县| 山东省| 元谋县| 南康市| 定西市| 民和| 乌兰察布市| 左贡县| 浦江县| 洪湖市| 商丘市| 洛宁县| 汝阳县| 牡丹江市| 太仓市| 景泰县| 房山区| 华池县| 瑞昌市| 望都县| 新闻| 随州市| 衡阳市| 武邑县| 汨罗市| 舟曲县| 韶关市| 平武县| 长治县| 舟山市| 虹口区| 仙桃市| 安化县| 开封县| 宜黄县|