Regex zum ersetzen der ungültigen Zeichen
Ich habe nicht viel Erfahrung mit RegEx also ich bin mit vielen verkettete Zeichenfolge.Replace () - Aufrufe, um unerwünschte Zeichen -- gibt es ein RegEx, ich kann schreiben, optimieren diese?
string messyText = GetText();
string cleanText = messyText.Trim()
.ToUpper()
.Replace(",", "")
.Replace(":", "")
.Replace(".", "")
.Replace(";", "")
.Replace("/", "")
.Replace("\\", "")
.Replace("\n", "")
.Replace("\t", "")
.Replace("\r", "")
.Replace(Environment.NewLine, "")
.Replace(" ", "");
Dank
- Auch wenn es nicht Ihre bevorzugte Codierung Konvention, wenn Sie die würde jedes
.Replace()
auf eine neue Zeile, es würde helfen, die Lesbarkeit auf dieser Website, so dass es nicht einen großen, horizontalen scrollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese regex:
\s
ist ein Charakter-Klasse entspricht[ \t\r\n]
.Wenn Sie nur wollen, zu bewahren alphanumerische Zeichen, anstatt jedes nicht-alphanumerische Zeichen in Existenz, um die Charakter-Klassen, Sie könnten dies tun:
Wo
\W
ist jede nicht-Wort-Zeichen (nicht[^a-zA-Z0-9_]
).\s
enthält auch\v
und\f
, aber diese sind nicht so Häufig verwendet, es sollte also kein problem sein.RegexOptions.Multiline
wirkt sich nur auf das Verhalten der Beginn und Ende der Zeichenfolge Anker^
und$
, aber ich könnte falsch sein.Charakter-Klassen die Rettung!
@
- die whitespace-äquivalenten im Spiel just fine. Obwohl in der Regel Sie ist eine gute Idee, mit verbatim-strings mit regexes. Aber hier nicht notwendig. Und natürlich seinen code nicht ersetzen Sie umgekehrte Schrägstriche (der einzige Charakter, den er (richtig) hast Flucht).Trim()
. Auch Leerzeichen, \n, \t und \r werden gemeinsam ersetzt mit \N als Rogue hat."[,:.;/\\\\n\t\r ]+"
, dann haben wir 3 backslashes mit einem einzelnen literal backslash, aber das ist einfach zu verdammt hässlich.\n
...Würden Sie wahrscheinlich wollen, zu einem whitelist-Ansatz, es ist ein Ozean von lustigen Figuren, deren Wirkung je nach Kombination nicht immer leicht zu Abbildung.
Einem einfachen regex löscht alles, aber die erlaubten Zeichen könnte wie folgt Aussehen:
Dem ^ ist dort zu invertieren Sie die Auswahl, abgesehen von den alphanumerischen Zeichen diese regex erlaubt | , . und _ können Sie hinzufügen und entfernen von Zeichen und Zeichensätzen, wie gebraucht.