所以我们有:
String test2 = "12+x+43+y+32-100";
Map<String, String> values = new HashMap<String, String>();
values.put("x", "3");
values.put("y", "7");
for (String key : values.keySet()) {
if (test2.contains(key)) {
String result = test2.replaceAll(key, values.get(key));
System.out.println(result);
}
}
输出:
12 + 3 + 43 + Y + 32-100
12 + X + 43 + 7 + 32-100
虽然它应该是:
12 + 3 + 43 + 7 + 32-100
答案 0 :(得分:1)
将result
替换为test2
test2= test2.replaceAll(key,values.get(key));
System.out.println(test2);
如果你在每次运行中创建一个新变量result
,你会得到一个新的字符串,其中只有一个变量被补充
答案 1 :(得分:0)
在你的for循环中,找到x后,它被替换为3.然后打印出来 12 + 3 + 43 + Y + 32-100 然后再次循环检查字母。然后它找到y并用7替换。但是前一个变量x不会受到影响。因此,将打印12 + x + 43 + 7 + 32-100。
答案 2 :(得分:0)
Java String对象是不可变的。方法replaceAll()返回一个新的String对象,并应用了操作,并且test2对象不变。
因此,您必须在结果对象中应用新修改,或者使用返回的对象重新分配test2对象。
for (String key : values.keySet()) {
if (test2.contains(key)) {
test2 = test2.replaceAll(key, values.get(key));
System.out.println(test2);
}
}