gpt4 book ai didi

java - 如何在 Java 中使用 StringBuilder 重写这段代码?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:02 25 4
gpt4 key购买 nike

给定一个词,我必须用一些特定的字母替换一些特定的字母表,例如 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com