在java中替换所有("匹配","替换")

时间:2016-04-16 10:56:33

标签: java regex

是否有任何有效的方法可以执行多个replaceAll("匹配","替换")。

我正在使用正则表达式找到匹配并替换。 e.g。

public static String replacePattern(String line)
{
 if(line != null || !"".equals(line)) 
  {
    line = line.replaceAll("regexPattern_1","replacce_1");
    line = line.replaceAll("regexPattern_2","replacce_2"); 
    line = line.replaceAll("regexPattern_3","replacce_3");
    line = line.replaceAll("regexPattern_4","replacce_4");

    .
    .
    .
    line = line.replaceAll("regexPattern_N","replacce_N");
    return line;
  }
 return line;
}

我不希望代码看起来很好,对我来说Perf很重要

3 个答案:

答案 0 :(得分:1)

我不确定你的意思是什么,但是如果你想写更短的文字你可以使用:

line = line.replaceAll("regexPattern_1","replacce_1")
           .replaceAll("regexPattern_2","replacce_2") 
           .replaceAll("regexPattern_3","replacce_3")
           .replaceAll("regexPattern_4","replacce_4")
           .
           .
           .
           .replaceAll("regexPattern_N","replacce_N");

或者:

String[] patterns = new String[] {"pattern1",....};
String[]  replace = new String[] {"replace1",....};

for(int i=0; i<patterns.length; i++)
{
   line = line.replaceAll(patterns[i],replace[i]);
}

答案 1 :(得分:1)

由于字符串是不可变的另一种处理方式:

str.replaceAll("a", "b").replaceAll("c", "d").replaceAll("e", "f");

答案 2 :(得分:1)

不确定是否可以提高效率。但你可以让它看起来很好。如果你想要更优雅,你可以使用递归,这需要一些额外的工作来终止。

public static String replacePattern(String line)
{
  //intitialize String[] repl with items to be replaces
  //initialize String[] pattern with corresponding replacements
  for(int i = 0; i<repl.length; i++)
     if(line != null || !"".equals(line)) 
        line = line.replaceAll(repl[i],pattern[i]);

 return line;
}