2017-06-14 3 views
1

Also baue ich einen kleinen Parser in C#, wo ein Benutzer Namen eingeben kann. Jetzt können diese Namen auf threeformats sein:Regex zum Entfernen von Satzzeichen, aber ohne Schrägstrich?

"name" OR "name/name" OR "name-name" 

Der Benutzer kann eine Eingabezeichenfolge mit unterschiedlicher Interpunktion schreiben wie name? oder name. Um diese zu entfernen bekam ich einen regulären Ausdruck geht, sieht wie folgt aus:

var expression = "name/name"; 
    var regexPunctuation = new Regex(@"[^-\w\s]"); 
    expression = regexPunctuation.Replace(expression, string.Empty); 

Meine Regex funktioniert für einzelne Namen und Namen mit einer - dazwischen, aber nicht Namen, die einen Schrägstrich haben. Wenn der Benutzer name/name eingibt, ist das Ergebnis nur name name. Wie kann ich meine Regex so ändern, dass sie den Schrägstrich ignoriert, so dass das Ergebnis name/name ist? Beachten Sie die zusätzlichen Leerzeichen zwischen der name/name.

+1

haben Sie versucht, einen Schrägstrich zu Ihrem ignorieren Muster hinzufügen? 'new Regex (@" [^ - \ w \ s /] ");' – DolceVita

+0

Teilen Sie die Zeichenfolge zuerst und bearbeiten Sie jede der 2 Teilzeichenfolgen, dann schließen Sie sich wieder an. Wenn es kein '/' gibt, verarbeite nur den Namensteil. –

+0

Was haben die zusätzlichen Leerzeichen mit dem Problem zu tun? Du sagst "nimm Notiz", aber soweit ich sehen kann, haben sie nichts mit dem Problem zu tun. Wenn sie relevant sind, erläutern Sie bitte detailliert. –

Antwort

0

Es sollte wie sein:

new Regex(@"[^-/\w\s]") 
+0

Versuchte das, macht keinen Unterschied. – leffe10

+1

http://imgur.com/C468GZ6 Vielleicht haben Sie etwas falsch in einem anderen Teil des Programms? – fdafadf

+0

Das funktioniert auch für mich, indem ich den Codeausschnitt der Frage benutze, aber mit dem zusätzlichen Schrägstrich im Muster. –

0

Versuchen Sie, die / wie folgt zu entkommen: new Regex(@"[^-\/\w\s]")

0
var regexPunctuation = new Regex(@"[^-\/\w\s]"); 
+0

Es ist nicht nötig, einen Schrägstrich zu vermeiden./ist kein Regex-Meta-Zeichen. –

Verwandte Themen