Вы можете использовать HashMap:
Map<String, String> map = new HashMap<String, String>();
map.put("R1", "R2");
map.put("R2", "R3");
for(String key: map.keySet()) {
str.replaceAll(key, map.get(key));
}
replaceAll также обрабатывает регулярные выражения.
РЕДАКТИРОВАТЬ: вышеупомянутое решение, как отмечали многие, не работает, потому что оно не обрабатывает циклические замены. Итак, это мой второй подход:
public class Replacement {
private String newS;
private String old;
public Replacement(String old, String newS) {
this.newS = newS;
this.old = old;
}
public String getOld() {
return old;
}
public String getNew() {
return newS;
}
}
SortedMap<Integer, Replacement> map = new TreeMap<Integer, Replacement>();
map.put(new Integer(1), new Replacement("R2", "R3"));
map.put(new Integer(2), new Replacement("R1", "R2"));
for(Integer key: map.keySet()) {
str.replaceAll(map.get(key).getOld(), map.get(key).getNew());
}
Это работает при условии, что вы заказываете замены должным образом и защищаете себя от циклических замен. Некоторые замены невозможны:
R1 -> R2
R2 -> R3
R3 -> R1
Вы должны использовать некоторые переменные 'temp' для них:
R1 -> R@1
R2 -> R@3
R3 -> R1
R@(\d{1}) -> R\1
Вы могли бы написать библиотеку, которая бы сделала все это для вас.