zoukankan      html  css  js  c++  java
  • java替换文本中所有的正则符号 Java问题通用解决代码

    开发时遇到一个需求,需要对一段文本中的所有正则符号进行转义,不然使用split分割方法分割文本的话无效,想到用替换来做,全部替换正则符号为转义后的符号
     
    贴java实现代码:
     
    1.测试版

          public static void main(String[] args) {
                String[] symbols = new String[] { "\\", "\/", "\[", "\]", "\(", "\)", "\{", "\}", "\?", "\+", "\*", "\|", "\.", "\^", "\$", "\-", "\^" };
                String text = "adasdasd|||adasdasd|||adasdasd|||adasdasd---aa";
                String delimiter = "---";
     
    //           for (char c : text.toCharArray()) {
    //                 if(symbols.)
    //           }
                long t1 = System.currentTimeMillis();
                for (String s : symbols) {
    //                text = text.replaceAll(s, "\" + s);
    //                text = Pattern.compile(text).matcher(s).replaceAll("\" + s);
    //                System.out.println(Pattern.compile(text, Pattern.LITERAL).matcher(s).find());
    //                text.replace(s, "\" + s);
    //                System.out.println(delimiter.indexOf(s) != -1);
    //                if (delimiter.indexOf(s) != -1) {
                      // replaceAll方法用的是正则匹配,replace不是
                      delimiter = delimiter.replaceAll(s, "\" + s);
    //                }
                }
                long t2 = System.currentTimeMillis();
                System.out.format("%s 耗时:%s", text, t2 - t1);
                // split方法用的是正则匹配
                String[] split = text.split(delimiter);
                System.out.println(split.length);
          }

     
     
     
    2.正式版

          /**
           * 转义所有的正则符号
           *
           * @param s
           *            文本
           * @return 转义后的文本
           */
          public static String escapeRegex(String s) {
                String[] symbols = new String[] { "\\", "\/", "\[", "\]", "\(", "\)", "\{", "\}", "\?", "\+", "\*", "\|", "\.", "\^", "\$", "\-", "\^" };
                // String text = "adasdasd|||adasdasd|||adasdasd|||adasdasd---aa";
                // String delimiter = s;
                if (s != null) {
                      for (String sym : symbols) {
                            s = s.replaceAll(sym, "\" + sym);
                      }
                }
                return s;
          }

     
     
     
     
  • 相关阅读:
    !!!C#——进制转换!
    冒泡排序后用二分查找法查找位置
    简陋的4位验证码程序(范围内取随机数)
    这个年龄计算程序相当不科学,体验还是差差哒
    8.7课堂随笔
    字符串中查询关键字
    !汉企的WiFi网速好快
    重度强迫症患者的九九乘法表
    自选数字和范围的整除算法
    day52
  • 原文地址:https://www.cnblogs.com/svennee/p/4082818.html
Copyright © 2011-2022 走看看