私は、さまざまな国や言語からのテキストを扱っています。「ワイド」フォーマット文字を使用するテキストが大量にあります。表面的には標準の ASCII 文字のように見えますが、書体が少し異なり、周囲に余分なスペースがあります。
現在、文字列の文字配列表現のすべての文字をループし、文字が広い文字範囲内にあるかどうかをテストし、そうである場合は、その文字を ASCII に相当する文字に置き換えてから、文字列に変換します。
public static String wideToShortChars(String s) {
char[] messagechars = s.toCharArray();
for (int i = 0; i < messagechars.length; i++) {
int thisChar = (int) messagechars[i];
if (thisChar >= 65280 && thisChar <= 65519) {
messagechars[i] = (char) (thisChar - 65248);
}
}
return new String(messagechars);
}
これは遅いように思えますが、正規表現を使用した方が速いと思います。\p{InHalfwidth_and_Fullwidth_Forms}
正規表現で用語を使用してこれらの文字を検索できることがわかりました。
これらのワイド文字を検索し、それらを同等の ASCII/標準文字に置き換える RegEx を作成できますか? 文字、数字、および通常の句読点のみでこれを行いたいです。