str = "IT\\u9435\\u4EBA\\u8CFD";
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); // 置換後變成: IT鐵\\u4EBA\\u8CFD,再重設一次就會找到下一個\uNNNN
}
跟Perl比起來,Java相對麻煩許多。主要是replaceFirst或replaceAll的第二個參數replacement無法程式化,只能用跑迴圈方式逐一找下個符合Pattern的進行置換。