close

  在為轉碼傷腦筋時,曾想把內碼轉成Unicode表示法如:\u4E00的字串混過去。雖然後來不用,不過運用Java Regex把Unicode表示法轉成Unicode字元可以一記:

str = "ABC\\u7CBE\\u8AA0";
Pattern pat = Pattern.compile(“\\\\u([0-9A-F]{4})”); // Unicode表示法\uNNNN
Matcher mat = pat.matcher(str);
while (mat.find()) {
    str = mat.replaceFirst(String.format("%c", (char) Integer.parseInt(mat.group(1), 16)));
    // group(1)記憶括號裡的[0-9A-F]{4}以16進位轉成char型態。然後置換第一個(replaceFirst)
    mat = pat.matcher(str); // 置換後變成: ABC精\\u8AA00,再重設一次就會找到下一個\uNNNN
}

  跟Perl比起來,Java相對麻煩許多。主要是replaceFirst或replaceAll的第二個參數replacement無法程式化,最多只能format。

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()