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() クラスで時折問題が発生するのは、常に同じ文字 "]" のようです。(いつも最終キャラだから?)

乾杯!

- - - - - - - - - - - - 編集 - - - - - - - - - - - -

この動作を表示するために使用された 1 つのメソッドのサンプル: (最後の「]」のみに問題があり、残りの文字列は期待どおりに見えます)

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