2024-06-25 23:08:19 发布
网友
Python有一个很好的函数来解码字符串中的十六进制和unicode字符,如下所示:
print "123\x20Fake\x20St\u002e".decode('unicode_escape')
将打印:
java中有没有类似的东西,或者这是必须用正则表达式处理的东西吗?在
编辑1
我相信我的问题与this one不同,因为它看起来像是要求解码一个只有十六进制的字符串。我的是混合的。在
如果尝试使用该字符串,则会收到一个错误,因为\x不是valid scape character。您可以使用将\x替换为\u00的unicode格式,也可以使用不带任何前一个字符的八进制格式。在
\x
\u00
Unicode码:
System.out.println("123\u0020Fake\u0020St\u002e"); // 123 Fake St.
八进制(20个十六进制到八进制是40):
另一方面,如果你有一个字符串的范围。在
String scaped = "123\\x20Fake\\x20St\\u002e";
它在java中是123\x20Fake\x20St\u002e。在
123\x20Fake\x20St\u002e
您可以看到this answer来转换scaped unicodes字符,但是您必须先处理十六进制,并且可以像前面提到的那样用\u00替换{}:
scaped.replaceAll("\\\\x", "\\\\u00")
然后使用上述答案中提到的任何方法来转换unicode转义字符串。使用apache commons-text将类似于:
commons-text
StringEscapeUtils.unescapeJava("123\\x20Fake\\x20St\\u002e" .replaceAll("\\\\x", "\\\\u00")) // 123 Fake St.
如果尝试使用该字符串,则会收到一个错误,因为
\x
不是valid scape character。您可以使用将\x
替换为\u00
的unicode格式,也可以使用不带任何前一个字符的八进制格式。在Unicode码:
八进制(20个十六进制到八进制是40):
^{pr2}$另一方面,如果你有一个字符串的范围。在
它在java中是
123\x20Fake\x20St\u002e
。在您可以看到this answer来转换scaped unicodes字符,但是您必须先处理十六进制,并且可以像前面提到的那样用}:
\u00
替换{然后使用上述答案中提到的任何方法来转换unicode转义字符串。使用apache
commons-text
将类似于:相关问题 更多 >
编程相关推荐