作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给定一个词,我必须用一些特定的字母替换一些特定的字母表,例如 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, 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);
}
}
虽然这些实现就地工作,但您可以创建一个新的 StringBuilder
实例(或附加到传入的实例)。
关于java - 如何在 Java 中使用 StringBuilder 重写这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/281933/
我是一名优秀的程序员,十分优秀!