是否有任何有效的方法可以执行多个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很重要
答案 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;
}