1

私は、さまざまな国や言語からのテキストを扱っています。「ワイド」フォーマット文字を使用するテキストが大量にあります。表面的には標準の 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 を作成できますか? 文字、数字、および通常の句読点のみでこれを行いたいです。

4

1 に答える 1

4

これは遅いように思えますが、正規表現を使用した方が速いと思います。

あなたは間違った想像をしていると思います。よく書かれた手書きの検索/置換変換は、正規表現として実装された同等のものよりも高速である可能性があります。その上、単一の正規表現でこの変換を行うことは不可能だと思います。

于 2013-01-24T03:24:47.867 に答える