0

私は上記のことをしようとしています。1 つのオプションは、特殊文字である char のセットを取得し、Java ロジックを使用してこれを実現することです。しかし、すべての特殊文字が含まれていることを確認する必要があります。

これを行うより良い方法はありますか?

4

2 に答える 2

0

Unicode 文字列からすべての制御文字を削除したいようです。これは、正規表現で Unicode 文字カテゴリ識別子を使用することで実現できます。カテゴリ「Cc」にはこれらの文字が含まれています。 http://www.fileformat.info/info/unicode/category/Cc/list.htmを参照してください。

myString = myString.replaceAll("[\p{Cc}]+", "");
于 2012-07-18T17:45:45.307 に答える
0

特殊文字を構成するものを決定する必要があります。興味深いメソッドの 1 つはCharacter.getType(char)で、Character.LOWERCASE_LETTER や Character.CURRENCY_SYMBOL などの Character の定数値のいずれかと一致する int を返します。これにより、文字の一般的なカテゴリを決定できます。次に、どのカテゴリを「特殊」文字と見なし、どのカテゴリをテキストの一部として受け入れるかを決定する必要があります。

Java は UTF-16 を使用してその char および String 値をエンコードするため、補助文字を処理する必要がある場合があることに注意してください (getType メソッドの説明にあるリンクを参照してください)。これは面倒ですが、Character メソッドには、この状況を検出して回避するのに役立つメソッドが用意されています。Character.isSupplementaryCodepoint(int)およびCharacter.codepointAt(char[], int)メソッドを参照してください。

また、Java 6 は Java 7 よりも Unicode に関する知識がはるかに少ないことに注意してください。Java の最新バージョンでは、Unicode データベースにはるかに多くの情報が追加されていますが、Java 6 で実行されているコードは、いくつかの (実際にはかなりの数の) エキゾチックなコードポイントを認識しません。 Unicode ブロックまたは一般的なカテゴリの一部であるため、コードを記述する際にはこれを念頭に置く必要があります。

于 2012-07-18T18:03:17.587 に答える