备忘:这个算是解码比较靠谱的亲测。参考自stackoverflowmark 分享
问题:使用过程中,遇到一个问题:就是当多次调用改函数的时候出现错误。原因在于函数名方式调用问题
在涉及Web前端开发时, 有时会遇到\uXXXX
格式表示的字符, 其中XXXX
是16进制数字的字符串表示形式, 在js中这个叫php unicodee转义字符, 和\n
\r
同属于转义字符. 在其他语言中也有类似的, 可能还有其它变形的格式.
哆数时候遇到需要解码的情况多点, 所以会先介绍解码decode, 后介绍编码piled);
没有内嵌正则语法, 也没有类似C#的@"\u1234"
原始形式字符串的语法, 所以要表示正则中匹配\
, 就需要\\\\
, 其中2个是用于Java中字符转义, 2个是正则中的字符转义.
|
|
手工做就是麻烦很多, 代码中也一坨的符号.
剩下的就是用|=
把各个部分的数字合并箌一起, 转换成char类型. 还有一些调整遍历位置等.
考虑到Java正则的杯具, 还是继续手工来吧, 相对解码来说代码少点.
|
|
对应于上文Java编码的实现正好是反向嘚实现, 依旧遍历字符, 遇到大于256的字符, 用位运算提取出4部分并使用Character.forDigit
转换成16进制数对应的字符.