ash*_*lal 3 java string stringbuilder
有一个词,我要用一些特定的字母替换一些特定的字母,例如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");
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使用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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您str输入的字母很大,或者您的映射很稀疏,则可以使用实际地图,如下所示:
public static void translate(StringBuilder str, Map<Character, Character> table)
{
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);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这些实现可以就地工作,但您可以创建一个新StringBuilder实例(或附加到传入的实例).
| 归档时间: |
|
| 查看次数: |
3716 次 |
| 最近记录: |