当前位置:  开发笔记 > 编程语言 > 正文

如何使用Java中的StringBuilder重写这段代码?

如何解决《如何使用Java中的StringBuilder重写这段代码?》经验,为你挑选了1个好方法。

有一个词,我要用一些特定的字母替换一些特定的字母,例如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就可以了吗?



1> erickson..:

我认为这是一个清晰度和性能愉快地重合的情况.我会使用查找表来进行"翻译".

  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 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实例(或附加到传入的实例).

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有