5

コントロールキャラクターについて質問です。文字列でそれらを見つけて削除する必要があります。いくつかの調査を行い、役立つヒントを見つけました。

私はこれを書きました:

output.toString().replaceAll("[\\p{Cntrl}\\p{Cc}]","")

しかし、制御文字がバイト単位で書かれている場合、この方法で制御文字を見つけることができるかどうか尋ねられました。正直なところ、わかりません。ネットで調べてみましたが、どうやって調べればいいのかわかりません。

ありがとう

4

2 に答える 2

3

はい、文字は削除されます。次のコードを参照してください。

byte[] chars = { 'h', 'e', 10, 15, 21, 'l', 'l', 'o', 13 };
String str = new String(chars, "utf8");
System.out.println("==========");
System.out.println(str);
System.out.println("==========");
System.out.println(str.replaceAll("[\\p{Cntrl}\\p{Cc}]", ""));
System.out.println("==========");

そのコードの出力は次のようになります。

 ==========
 he
 llo
 ==========
 hello
 ==========

特殊文字が String オブジェクトに含まれると、それが byte[] から作成されたものであるか、その他のオブジェクトから作成されたものであるかは関係ありません。常に同じ形式で格納されます。

于 2014-05-14T11:41:19.477 に答える