Ich versuche, eine Zeichenfolge "Bereinigung" -Funktion schreiben, die nur alphanumerische Zeichen sowie einige andere, wie Unterstreichung, Punkt und das Minuszeichen (Bindestrich) erlaubt.Können Sie eine RegEx erstellen, um unerwünschte Zeichen durch den Unterstrich zu ersetzen?
Momentan verwendet unsere Funktion eine direkte Chariteration der Quellzeichenfolge, aber ich versuche, sie in RegEx zu konvertieren, weil das, was ich gelesen habe, viel sauberer und performanter ist (was mir rückwärts über einen Gerade Iteration, aber ich kann es nicht profilieren, bis ich eine funktionierende RegEx bekomme.)
Das Problem ist zweifach für mich. Eines weiß ich, die folgende regex ...
[a-zA-Z0-9]
... eine Reihe von alphanumerischen Zeichen entspricht, aber wie kann ich auch den Unterstrich, Periode und die Minuszeichen? Entweichst du sie einfach mit dem "\" - Zeichen und legst sie zwischen die Klammern mit dem Rest?
Zweitens, für jedes Zeichen, das nicht Teil der Übereinstimmung ist (d. H. Andere Interpunktion wie '?') Möchten wir es mit einem Unterstrich ersetzt.
Ich denke, stattdessen auf eine Reihe von gewünschten Zeichen übereinstimmen, passen wir auf ein einzelnes Zeichen, das nicht im gewünschten Bereich ist, dann ersetzen Sie das. Ich denke, die RegEx denn das ist die Karat als erstes Zeichen zwischen den Klammern wie folgt schließen ...
[^a-zA-Z0-9]
Ist das der richtige Ansatz?
Regex.Replace() Methode ist, was Sie brauchen – terrybozzio
ich dachte, dass, aber bitte sehen meine Frage, oder besser gesagt, zwei Fragen dazu. – MarqueIV
Sie möchten Ihre Zeichenklasse invertieren. dh. '[^ a-zA-Z0-9]', was alles entspricht, was _nicht_ alphanumerisch ist. –