Antworten:
Verwenden Sie Zeichenklassen: [ \t]
\t
?
Wie @ Eiríkr Útlendi feststellte, berücksichtigt die akzeptierte Lösung nur zwei Leerzeichen: die horizontale Registerkarte (U + 0009) und ein Leerzeichen (U + 0020). Andere Leerzeichen wie nicht unterbrechende Leerzeichen (die sich zufällig in dem Text befinden, mit dem ich mich befassen möchte) werden nicht berücksichtigt. Eine vollständigere Liste mit Leerzeichen ist in Wikipedia enthalten und wird auch in der verknüpften Perl-Antwort erwähnt . Eine einfache C # -Lösung, die diese anderen Zeichen berücksichtigt, kann mithilfe der Zeichenklassensubtraktion erstellt werden
[\s-[\r\n]]
oder, einschließlich der Lösung von Eiríkr Útlendi, erhalten Sie
[\s\u3000-[\r\n]]
Hinweis: Für diejenigen , die sie mit CJK - Text (Chinesisch, Japanisch und Koreanisch), der Double-Byte - Raum (Unicode \u3000
) ist nicht in enthält \s
für jede Implementierung habe ich versucht , so weit (Perl, .NET, PCRE, Python). Sie werden Ihre Strings müssen entweder normalisieren zuerst (wie von allen ersetzt \u3000
mit \u0020
), oder Sie einen Zeichensatz, der diese Codepoint enthält zusätzlich zu was auch immer andere Leerzeichen Sie Targeting, wie verwenden müssen [ \t\u3000]
.
Wenn Sie Perl oder PCRE verwenden, haben Sie die Möglichkeit, die \h
Kurzform für horizontale Leerzeichen zu verwenden , die anscheinend unter anderem den Einzelbytebereich , den Doppelbytebereich und die Registerkarte enthält. Weitere Informationen finden Sie im Perl- Thread (Match Whitespace, aber nicht Newlines) .
Diese \h
Abkürzung wurde jedoch nicht für .NET und C # implementiert, wie ich am besten beurteilen konnte.
\h
(eingeführt in Java 8) enthält \u3000
, aber \s
nicht, es sei denn, Sie setzen den UNICODE_CHARACTER_CLASS-Modus (eingeführt in Java 7).
Wenn Sie den Platz unter dem Code ersetzen möchten, haben Sie in gearbeitetC#
Regex.Replace(Line,"\\\s","");
Für Tab
Regex.Replace(Line,"\\\s\\\s","");
\h
Zeichenklasse, aber es zeigt, dass es viele andere Leerzeichen gibt, falls Sie sie hier zur Liste hinzufügen müssen.