循环使用String来查找Unicode字符需要花费太多时间

Far*_*hat 1 string blackberry java-me

我正在创建一个自定义字段,我想用图片替换一些unicode caracters.它就像为黑莓设备做表情符号.好吧,我在编辑字段中循环caracters并用图像替换unicode caracters有问题.当文本变得太长时,循环花费太多时间.

我的代码如下:

String aabb = "";
char[] chara = this.getText().toCharArray();
for (int i = loc; i < chara.length; i ++) {
   Character cc = new Character(chara[i]);
   aabb += cc.toString();
   if (unicodeCaracter) {
       //Get the location
       //draw the image in the appropriate X and Y
   }
}
Run Code Online (Sandbox Code Playgroud)

这很好用,图像正好在正确的位置.但问题是当文本变大时,循环花费太多时间,并且设备上的文本输入变得不友好.

如何在文本中找到unicode caracters,而不必每次都为它们循环?他们错过了另一种方式吗?

我需要帮助解决这个问题.提前致谢

Jon*_*eet 8

那么你正在创建一个新的角色,并在每个循环迭代一个新的String,该字符串转换为字符数组开始.您还在循环中使用字符串连接而不是使用StringBuffer.所有这些都将损害性能.

这里"Unicode字符"的含义并不明显 - Java中的所有字符都是Unicode字符.我怀疑你真的想要这样的东西:

String text = this.getText();
StringBuffer buffer = new StringBuffer(text.length());
for (int i = 0; i < text.length(); i++) {
    char c = text.charAt(i);
    buffer.append(c);
    if (c > 127) { // Or whatever
        // Take some action
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设"采取一些行动"将在某些方面改变缓冲区,否则缓冲区当然没有意义......但从根本上说,这可能是你想要的那种改变.

循环中的字符串连接是一个特别糟糕的主意 - 有关更多详细信息,请参阅我的文章.