根据XML 规范,只有以下字符是合法的:
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
我有一个名为的字符串foo
,其中包含一个对象的 JSON 表示。JSON 对象的某些字符串包含 XML 中非法字符的转义序列,例如\u0002
和\u000b
.
我想在将这些转义序列foo
扔到 JSON 到 XML 转换器之前去除这些转义序列,因为转换器是一个黑匣子,无法处理这些无效字符。
我想做的例子:
MAGIC_REGEX = "<here's what needs to be found>" # TODO
String foo = "\\u0002bar b\\u000baz qu\\u000fx"
String clean_foo = foo.replace(MAGIC_REGEX, "�") # � Unicode replacement character
System.out.println(clean_foo) # Output is "bar baz qux"
我怎样才能做到这一点?使用正则表达式而不是解析字符串和比较 Unicode 代码点的解决方案的奖励积分。
我知道这个 SO question。但是,我的问题是非法字符的转义序列,而不是真实字符本身。