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;
          }

     
     
     
     
  • 相关阅读:
    大写的服,看完这篇你还不懂RocketMQ算我输
    写一个通用的幂等组件,我觉得很有必要
    如何将分布式锁封装的更优雅
    哇,ElasticSearch多字段权重排序居然可以这么玩
    每日一道 LeetCode (52):三数之和
    JVM 第六篇:极致优化 IDEA 启动速度
    JVM 第五篇:命令行 JVM 故障处理工具
    JVM 第四篇:可视化 JVM 故障处理工具
    JVM 第三篇:Java 类加载机制
    JVM 第二篇:垃圾收集器以及算法
  • 原文地址:https://www.cnblogs.com/svennee/p/4082818.html
Copyright © 2011-2022 走看看