0

私がずっと前に尋ねたものへのフォローアップ、すべてのセルが特定の値に設定されていない可能性があるバイト配列から文字列を構築しようとしています(以下のコードを参照)。String がそのようなバイト配列から構築されている場合、割り当てられているが設定されていないバイトがまだカウントされ、( を使用しequals()た) 比較が失敗するようです。

見る、

public class Test{
    public static void main(String[] args){
        byte[] b = new byte[10];
        String s = "RESET ME";
        for(int i = 0; i < 8; i++){
            b[i] = (byte) s.charAt(i);
        }
        String s2 = new String(b);
        System.out.println(s.equals(s2));
    }
}

「false」を出力します。独自のコンパレータを作成する以外に、設定されていないバイトを考慮しないように文字列を比較する方法はありますか?

4

1 に答える 1

2

シンプルに保ち、コンストラクターbyte[]を使用してString(bytes, offset, len)構築された文字列を構築し、未設定のバイトをまったく含めないようにしてください。

String s2 = new String(b, 0, 8);
于 2013-07-16T11:12:58.323 に答える