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を認識しています。ただし、ここでの問題は、実際の文字自体ではなく、不正な文字のエスケープ シーケンスです。