2010-12-21 30 views
4

Ich habe ein VB.NET-Programm, das den Inhalt von Dokumenten behandelt. Das Programm verarbeitet große Mengen von Dokumenten als "Batch" (> 2 Millionen Dokumente; insgesamt 1 TB Volumen) Einige dieser Dokumente enthalten möglicherweise Steuerzeichen oder Zeichen wie f0e8 (http://www.fileformat.info/info/unicode/char /f0e8/browsertest.htm).So entfernen Sie Kontrollzeichen aus UTF8-Zeichenfolge

Gibt es eine einfache und vor allem schnelle Art und Weise zu entfernen, dass Zeichen (außer Leerzeichen, Zeilenumbruch, Tabulator, ...) Wenn die Antwort regex ist: Hat jemand einen kompletten regex für mich?

Danke!

+3

Was ist das Problem mit den Steuerzeichen? Ich gehe davon aus, dass sie für die Dokumente selbst geeignet sind. – Lazarus

+0

Das Programm verwendet verschiedene Parser (Word, PDF, ...) und behandelt Plain/Text und XML-Dateien. Manchmal enthält die (extrahierte) "body"/content Zeichenfolge noch immer störende Zeichen wie "f0e8". Also muss ich sie selbst entfernen – Mimefilt

+0

http://www.utf8-chartable.de/unicode-utf8-table.pl?start=61568&number=512 sagt, dass f0e8 ist ein utf8 char oder bin ich falsch? – Mimefilt

Antwort

13

resultString = Regex.Replace(subjectString, "\p{C}+", ""); 

Dies wird alle "anderen" Unicode-Zeichen entfernen (Kontrolle, Format, den privaten Gebrauch, Surrogat und nicht zugeordnet) aus dem String.

+0

Vielen Dank: D Funktioniert gut! Ich hüpfe es wird den Prozess nicht zu sehr verlangsamen. – Mimefilt

+0

Warum wird das @ in Visual Basic nicht akzeptiert? Ich bekomme den Fehler "Ausdruck erwartet" am @. – systemovich

+0

+1. Getestet und es funktioniert; ohne das @ in VB. – systemovich

0

Hier ist die POSIX Regex für Steuerzeichen: [:cntrl:], von Regular Expression auf Wikipedia. Versuchen

+4

Posix ist ziemlich tot, möge es in Stücken ruhen. –

Verwandte Themen