Я бы НЕ рекомендовал использовать для этого какие-либо регулярные выражения, все они на самом деле мучительно медленны, когда вы выполняете простые операции. Вместо этого я бы порекомендовал вам начать с чего-то вроде этого
// usage:
Map<String, String> replaceRules = new HashMap<String, String>();
replaceRules.put("ao", "1");
replaceRules.put("df", "2");
replaceRules.put("n", "3");
String s = replacePartsOf("foobooandfoo", replaceRules);
// actual method
public String replacePartsOf(String thisString, Map<String, String> withThese) {
for(Entry<String, String> rule : withThese.entrySet()) {
thisString = thisString.replaceAll(rule.getKey(), rule.getValue());
}
return thisString;
}
и после того, как у вас все получится, реорганизуйте его, чтобы использовать вместо него массивы символов. Хотя я думаю, что то, что вы хотите сделать, можно сделать с помощью StringBuilder, оно, скорее всего, не будет стоить усилий.