我在一个 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();
}