iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-我的私藏工具箱

正則!好好表達系列 第 16

Java Regex轉\uNNNN為Unicode字元

  • 分享至 

  • xImage
  •  
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的進行置換。


上一篇
ngx.re解析URI
下一篇
千分位
系列文
正則!好好表達30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言