我想将所有出现的“\uXXXX”类型的正则表达式替换为相应的字符,其中“XXXX”是一个十六进制数字,表示 Unicode 字符。
我尝试了以下 Scala 代码:
def unscape(s : String) : String = {
val rex = """\\u([0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z])""".r
rex.replaceAllIn(s,m => {
hex2str(m.group(1))
}
}
def hex2str(s:String): String = {
Integer.parseInt(s,16).toChar.toString
}
如果我尝试,例如:
unscape("Hi\\u0024, \\u0024")
它给出了以下例外:
java.lang.StringIndexOutOfBoundsException: String index out of range: 1
在另一个问题中,Java 对 Unicode 字符的处理似乎存在错误。那是问题吗?