内置的字符串替换不支持替换多次出现。因此,您需要编写自己的方法来执行此操作。
下面的代码假定oldstuff 包含唯一的字符串。如果它们不是唯一的,您将不得不编写不同的解决方案。
public static void main(String[] args) {
String original = " She was born on DATE at TIME on DAY";
String[] oldstuff = {"DATE", "TIME", "DAY"};
String[] newstuff = {"Feb 14, 2000", "midnight", "Tuesday"};
System.out.println(original);
String updated = replace(original, oldstuff, newstuff);
System.out.println(updated);
}
static String replace(String str, String[] oldstuff, String[] newstuff) {
for (int i = 0; i < oldstuff.length; i++) {
str = str.replace(oldstuff[i], newstuff[i]);
}
return str;
}
输出:
She was born on DATE at TIME on DAY
She was born on Feb 14, 2000 at midnight on Tuesday
更好的解决方案是逐字扫描,只替换找到的匹配项。
static String replace2(String str, String[] oldstuff, String[] newstuff){
StringBuilder sb = new StringBuilder();
java.util.Scanner s = new Scanner(str);
int index = 0;
while(s.hasNext()){
String word = s.next();
if (word.equals(oldstuff[index])){
sb.append(" ").append(newstuff[index]).append(" ");
index++;
} else {
sb.append(" ").append(word).append(" ");
}
}
return sb.toString();
}