我正在尝试查找和替换字符串。以下是我所熟悉的内容。 我对如何强制所有更改显示在一行中感到困扰,如下所示。
Strings source = "parameter='1010',parameter="1011",parameter="1012" ";
Expected result = "parameter='1013',parameter="1015",parameter="1009" ";
Strings fin1 = "1010";
Strings fin2 = "1011";
Strings fin3 = "1012";
Strings rpl1 = "1013";
Strings rpl1 = "1015";
Strings rp21 = "1009";
Pattern pattern1 = Pattern.compile(fin1);
Pattern pattern2 = Pattern.compile(fin2);
Pattern pattern3 = Pattern.compile(fin3);
Matcher matcher1 = pattern1.matcher(source);
Matcher matcher2 = pattern2.matcher(source);
Matcher matcher3 = pattern3.matcher(source);
String output1 = matcher1 .replaceAll(rpl1);
String output2 = matcher2 .replaceAll(rpl2);
String output3 = matcher3 .replaceAll(rpl3);
感谢,
答案 0 :(得分:2)
您可以使用replaceAll(..)
上定义的String
方法:
String source = "parameter='1010',parameter='1011',parameter='1012' ";
source = source.replaceAll("1010", "1013");
source = source.replaceAll("1011", "1015");
source = source.replaceAll("1012", "1009");
或更简洁:
source = source.replaceAll("1010", "1013").replaceAll("1011", "1015").replaceAll("1012", "1009");
请注意,replaceAll(..)
的第一个参数也被视为正则表达式。
答案 1 :(得分:2)
为什么不执行以下操作:
String result=source.replaceAll(fin1,rpl1).replaceAll(fin12,rpl2).replaceAll(fin3,rpll);
调用此方法 form str.replaceAll(regex,repl) 产生与结果完全相同的结果 表达 Pattern.compile(正则表达式).matcher(STR).replaceAll(REPL)
所以你不必进行正则表达式等的所有中间编译。
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replaceAll(java.lang.String,java.lang.String)
答案 2 :(得分:2)
这应该这样做:
public class Main {
public static void main(String[] args) {
String source = "parameter='1010',parameter='1011',parameter='1012' ";
String fin1 = "1010";
String fin2 = "1011";
String fin3 = "1012";
String rpl1 = "1013";
String rpl2 = "1015";
String rpl3 = "1009";
source = source.replaceAll(fin1, rpl1).replaceAll(fin2, rpl2).replaceAll(fin3, rpl3);
System.out.println("Result: " + source);
}
}