0
我有我的数据需要在各种其他应用程序进一步处理之前清理。在这个过程中,一个下游应用程序只允许一定范围的Unicode字符。以下是我用来去除无效的Unicode字符的正则表达式。无法去除无效的Unicode字符java
/[^\u0009\u000a\u000d\u0020-\uD7FF\uE000-\uFFFD]/
但是,我仍然有问题让正则表达式在Java中工作。有没有特殊的方式来处理上述正则表达式,因为它包含一系列的Unicode字符?
UPDATE: 这是我的测试相同,似乎并没有得到它与@Andreas建议的工作方式:
public void testStripUnicode() {
String doc = "{\"fields\":{\"field1\":\"unicode char '\\u000b'\",\"field2\":[\"unicode char '\\u0003'\"]}}";
String stripped = DocumentCleaner.clean(doc);
System.out.println(doc);
System.out.println(stripped);
}
DOC
{"fields":{"field1":"unicode char '\u000b'","field2":["unicode char '\u0003'"]}}
剥离-doc的
{"fields":{"field1":"unicode char '\u000b'","field2":["unicode char '\u0003'"]}}
尝试同样的。似乎没有工作。 –
@AdiGuN测试字符串不包含您的正则表达式将剥离的任何字符 - 字符串文字“”\\ u0003“'是六个字符反斜杠,u,0003,而不是单个字符U + 0003。如果你想删除这些转义序列以及它们表示的字符,那么你需要一个不同的正则表达式。 –
@IanRoberts你能否详细说明一下。正则表达式似乎在它前面包含^,所以\ u0003应该被剥离正确吗? –