有一个词,我要用一些特定的字母替换一些特定的字母,例如1代表a,5代表b等等.我正在使用正则表达式.我知道StringBuilder是处理这个问题的最佳方法,因为我正在进行大量的字符串操作.这是我正在做的事情:
String word = "foobooandfoo"; String converted = ""; converted = word.replaceAll("[ao]", "1"); converted = converted.replaceAll("[df]", "2"); converted = converted.replaceAll("[n]", "3");
我的问题是如何使用StringBuilder重写该程序.我尝试了一切,但我不能成功.或者使用String就可以了吗?
我认为这是一个清晰度和性能愉快地重合的情况.我会使用查找表来进行"翻译".
public static void translate(StringBuilder str, char[] table) { for (int idx = 0; idx < str.length(); ++idx) { char ch = str.charAt(idx); if (ch < table.length) { ch = table[ch]; str.setCharAt(idx, ch); } } }
如果您str
输入的字母很大,或者您的映射很稀疏,则可以使用实际地图,如下所示:
public static void translate(StringBuilder str, Maptable) { for (int idx = 0; idx < str.length(); ++idx) { char ch = str.charAt(idx); Character conversion = table.get(ch); if (conversion != null) str.setCharAt(idx, conversion); } }
虽然这些实现可以就地工作,但您可以创建一个新StringBuilder
实例(或附加到传入的实例).