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應該被剝離正確嗎? –