清野ともうします。
2011年5月4日21:07 eijixAG <nish...@gmail.com>:
> こんにちは。
>
> eijixAGです。
> 質問ばかりで申し訳ないです。
>
> unicode文字が含まれたテキスト(utf-8)から、unicode文字(\uxxxx)のみ抜き出し、さらにその下4桁(xxxx)を取得した
> いのですが、上手くいきません。
>
> ==========
> Pattern p = Pattern.compile("[\uE63E-\uE757]");
このコードですが、System.out.println を使って表示を試すと何も表示されません。
存在しないコード範囲では見つからないのも道理ですがこの範囲は正しいのですか?
試したのはE63E, E640, E642, E644 の4文字です。
> unicode文字が含まれたテキスト(utf-8)から、unicode文字(\uxxxx)のみ抜き出し、さらにその下4桁(xxxx)を取得した
> いのですが、上手くいきません。
正規表現使わないでできますね。 java.lang.String#codePointAt(int index) で char を取得し、
java.lang.Character のメソッドをお好きなように使えばやりたい事ができるように思います
--
// TAO Seiichiroh <tao19...@gmail.com>
「boolean b1=false」となる原因ですが、
Matcherのmatches()とfind()の違いを調べればわかるかと思います。
ソースは以下のような感じでしょうか。
String content = "\uE63Cて\uE63Eす\uE63Fと\uE640";
Pattern p = Pattern.compile("[\uE63E-\uE757]");
Matcher m = p.matcher(content); // テキストcontentの中に含まれたunicode文字を探す
while (m.find()) {
String character = m.group(0);
String code = "";
for (int tmp : character.getBytes("UTF-16")) {
if (tmp < 0) tmp = tmp + 256;
String dscode = Integer.toHexString(tmp);
if (dscode.length() < 2) dscode = "0" + dscode;
code += dscode;
}
System.out.println(character + "=>" + code + "");
}
以下のHPを参考にしました。
http://bellks-tec.cocolog-nifty.com/blog/2007/04/unicodejava_d79d.html
以上です。