.
Anmeldung | Registrieren | Hilfe
in Suchen

RegEx String mit Leerzeichen

Letzter Beitrag 19. Jun 2012 12:42 von klaus_b. 4 Antworten.
Seite 1 von 1 (5 Treffer)
Beiträge sortieren: Zurück Weiter
  • 19. Jun 2012 10:05

    • WiglWagl
    • Top 25 Mitwirkender
    • Registriert am 18. Aug 2009
    • Beiträge 181
    • Punkte 2.740

    RegEx String mit Leerzeichen

    Hi,

    ich stehe gerade vor dem Problem einen Text zu validieren, der Alphanummerisch ist und Leerzeichen enthalten darf.

    ich dachte so sollte es gehen:

    Regex objAlphaNumericPattern = new Regex("^[A-Za-z0-9\s]{1,}$");

    Aber das "s" bei \s wird als Fehler ausgewisen:

    c# Unexpected s

    Wieso das? Was ist hier falsch?
    Vielen DAnk

    lg

    ww

    • IP-Adresse ist Registriert
  • 19. Jun 2012 11:49 Antwort zu

    • Gordon Breuer
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04. Jun 2008
    • Frankfurt a.M.
    • Beiträge 344
    • Punkte 5.750
    • Moderator

    RegEx String mit Leerzeichen

    Hallo WiglWagl,

    versuche es mal hiermit:

    Regex objAlphaNumericPattern = new Regex(@"^[A-Za-z0-9\s]{1,}$");

    Das "@" vor den Anführungszeichen ist wichtig. Damit ignoriert C# sämtliche Escape-Sequenzen wie den Backslash. Ohne das "At"-Zeichen versucht C# das "s" selbst zu interpretieren - mit der erwähnten Fehlermeldung.

    Noch ein Tipp: Du kannst das {1,} auch ersetzen durch das "Plus" (+), das macht genau das Gleiche Smile

    Abgelegt unter: , , ,
    • IP-Adresse ist Registriert
  • 19. Jun 2012 12:03 Antwort zu

    • klaus_b
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 28. Jan 2008
    • Waldkraiburg
    • Beiträge 764
    • Punkte 12.255
    • Moderator

    RegEx String mit Leerzeichen

    In C# steht der Backslash \ als Escapezeichen immer vor eine Zeichen das in einem String als Zeichen gesehen werden soll. Z.B.: ein Anführungszeichen dass im string auftauchen soll wird "escaped" \"
    Das Zeichen s ist kein Zeichen, dass escaped werden kann. Also musst du hier den Backslash escapen, in dem du einen zweiten Backslash davor setzt: \\s
    Damit dürfte die Fehlermeldung des C#-Compilers nicht mehr auftauchen.

    Servus,
    Klaus

    EDIT:
    Gordon war schneller.

    P.S.
    Der Tip von Gordon mit dem @-Zeichen ist gut und in diesem Fall richtig. Solltest du aber Anführungszeichen in einem string benötigen, ist das je nach zusammenstellung der Zeichenfolge problematisch. Ich habe mir deshalb angewöhnt immer mit dem \ zu escapen. So habe komme ich nie in die Situation, dass cih mein gewogntes Vorgehen ändern muss.

    klaus_b@.NET
    Alles was an .NET und C# Spass macht, ... oder manchmal auch nicht.
    • IP-Adresse ist Registriert
  • 19. Jun 2012 12:19 Antwort zu

    • Gordon Breuer
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04. Jun 2008
    • Frankfurt a.M.
    • Beiträge 344
    • Punkte 5.750
    • Moderator

    RegEx String mit Leerzeichen

    klaus_b:
    Solltest du aber Anführungszeichen in einem string benötigen, ist das je nach zusammenstellung der Zeichenfolge problematisch. Ich habe mir deshalb angewöhnt immer mit dem \ zu escapen. So habe komme ich nie in die Situation, dass cih mein gewogntes Vorgehen ändern muss.

    Du kannst Anführungszeichen ja auch mit dem @ verwenden, musst dann halt immer zwei Stück machen (ähnlich wie ohne "at" zweimal der Backslash). Ist denke ich reine Geschmackssache, bin das so noch von classic ASP gewohnt Big Smile

    Variante mit @:

    string test = @"Das ist die Variante ""mit"" dem at!";

    Variante ohne @:

    string test = "Das ist die Variante \"ohne\" das at!";

    Finde das erste einfacher zu lesen, aber beide Varianten sind wie gesagt gleichwertig. Vor allem bei regulären Ausdrücken machen die zwei Backslashes den String imho aber noch schwerer lesbar - falls das für RegEx überhaupt noch möglich ist Stick out tongue

    Das nur der Vollständigkeit halber Smile

    • IP-Adresse ist Registriert
  • 19. Jun 2012 12:42 Antwort zu

    • klaus_b
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 28. Jan 2008
    • Waldkraiburg
    • Beiträge 764
    • Punkte 12.255
    • Moderator

    RegEx String mit Leerzeichen

    Gordon Breuer:
    Ist denke ich reine Geschmackssache
    Stimmt!

    Gordon Breuer:
    bin das so noch von classic ASP gewohnt Big Smile
    Dann bin ich anscheinend immer noch zu C-lastig Wink

    Lesbarkeit, ja das ist so ein Umstand. IMO genauso Geschmacksache wie jede andere Situatuin in der es mehr als einen Weg gibt. Ein Beispiel ist der Ternär-Operator. Ich liebe ihn, andere sagen: "das kann man ja nicht lesen".
    Zumindest wurden jetzt dem OP beide Wege aufgezeigt. Entscheiden kann er sich dann für den, der im besser zusagt Big Smile

    Servus,
    Klaus

    klaus_b@.NET
    Alles was an .NET und C# Spass macht, ... oder manchmal auch nicht.
    • IP-Adresse ist Registriert
Seite 1 von 1 (5 Treffer)

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum