11

インドの言語で次のコードが機能しない (false になる) のはなぜですか?

System.out.println(Charset.forName("UTF-8").encode("అనువాద")
                .asCharBuffer().toString().matches("\\p{L}+"));

System.out.println(Charset.forName("UTF-8").encode("स्वागत")
                .asCharBuffer().toString().matches("\\p{L}+"));

System.out.println(Charset.forName("UTF-8").encode("நல்வரவு")
                .asCharBuffer().toString().matches("\\p{L}+"));

上記のコードはすべて false を返します。この正規表現の問題は何ですか? 世界のユニコード文字を検証する方法は?

4

1 に答える 1

5

\p{Letter}は文字のみをキャプチャしますが、 でキャプチャできるマークも必要です\p{Mark}

System.out.println("स्वागत".matches("[\\pL\\pM]+"));
于 2013-05-02T10:39:44.280 に答える