-1

バイトコードの文字列を検索する方法を見つけるために、多くの検索を試みました。次に例を示します。

String stringThatHasBytes = "hello world hello world[B@9304b1";

If stringThatHasBytes . Does have bytes {
return true or false
}

文字列のバイトを検索できるメソッドはありますか?

4

3 に答える 3

0

これが役立つかどうかを確認してください

        byte[] myByteArray = new byte[5];

        myByteArray[0] = 'a';
        myByteArray[1] = 'b';
        myByteArray[2] = 'c';
        myByteArray[3] = 'd';
        myByteArray[4] = 'e';


        for (byte x : myByteArray)
            System.out.println(x);


        String myString = "abcde";

        System.out.println(myString.equals(new String(myByteArray)));
于 2013-01-15T02:29:42.990 に答える
0

contains はあなたにとって答えが単純すぎるでしょうか?

boolean hasBytes = str.contains("[B@");

もしそうなら、私に知らせてください。良い正規表現をお見せします! しかし、それで十分なはずです。

于 2013-01-15T02:30:41.600 に答える
0

要するに、これはできません。バイトの印刷は、印刷するたびに変わるためです。バイトを出力しても実際のバイトは出力されず、バイトの正確な比較を探している場合は無意味です。

ただし、文字列内のバイト印刷のみを探す場合は、文字列[B@内の s を制御して true を返します。

String stringThatHasBytes = "hello world hello world[B@9304b1";

if (stringThatHasBytes.indexOf("[B@") >= 0)
    return true;
} else return false;

編集:

意味のある方法でバイトを印刷する方法が必要な場合は、バイトを次のような意味のあるテキストに変換する必要があります。

public static String convertByteArrayToHexString(byte[] b) {
    if (b != null) {
        StringBuilder s = new StringBuilder(2 * b.length);

        for (int i = 0; i < b.length; ++i) {
            final String t = Integer.toHexString(b[i]);
            final int l = t.length();
            if (l > 2) {
                s.append(t.substring(l - 2));
            } else {
                if (l == 1) {
                    s.append("0");
                }
                s.append(t);
            }
        }

        return s.toString();
    } else {
        return "";
    }
}
于 2013-01-15T02:29:00.960 に答える