3

我在一个 Android 应用程序中有一些代码可以像这样格式化数据。"[x, y, z]".

我们主要使用 java 的 StringBuilder() 类,它的 append 方法如下:

StringBuilder sb = new StringBuilder();
sb.append("[x, y, z");
sb.append("]");

但在某些情况下,我们使用加号运算符进行基本的字符串连接,如下所示:

String str = "[x, y, z";
str = str + "]";

我们最近遇到了一种情况,我看到“]”字符被翻译成这个"Ԃ3ҡ嶴u)",但仅限于使用 stringbuilder 类的地方。它开始正常工作,但在开始转换此字符后,每次看到该字符并在代码中的多个位置都进行此转换。这导致输出如下所示:"[ x, y, zԂ3ҡ嶴u)";

这是一种极其罕见的情况,因为我只见过这种情况发生了几次,但我希望这里的人可能知道为什么会发生这种情况,以及是否可以采取任何措施来防止这种情况发生。我宁愿不要从我们的项目中删除 stringbuilder 来解决这种罕见的情况。

我们已经在 Android 设备上注意到了这一点,而且它开始的非常突然。(它工作正常,然后突然所有后续的“]”实例都被转换了)

有什么想法或建议可以防止这种情况发生吗?不幸的是,我无权访问报告此数据进行测试的设备。

谢谢!

- - - - - - - - - - - - 编辑 - - - - - - - - - - - -

我再次遇到了同样的事情(也使用 StringBuilder() 类),但这次它将相同的字符"]"转换为"U".

所以输出看起来像这样"[x, y, zU"

看起来它总是与 StringBuilder() 类偶尔出现问题的字符“]”相同。(也许是因为它总是最后一个角色?)

干杯!

- - - - - - - - - - - - 编辑 - - - - - - - - - - - -

显示此行为的一种方法示例:(只有最后一个“]”有问题,字符串的其余部分看起来如预期)

public static String convertArrayToString(double[] array) {
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    for (int i = 0; i < array.length; i++) {
        sb.append(String.valueOf(array[i]));
        if ((i + 1) != array.length) {
            sb.append(",");
        }
    }
    sb.append("]");
    return sb.toString();
}
4

0 回答 0