2017-02-02 4 views
0

Ich entwickle eine C# -App.Regulärer Ausdruck ad hoc

Ich habe ein Text-Eingabefeld mit einem Absenden-Button.

Wenn ich auf die Schaltfläche klicke, möchte ich prüfen, ob der Text genau ist: "CODxxxxx" (x = Nummer).

Eigentlich habe ich dies:

if (inputText1.ToLower().Contains("COD") && inputText1.Length.ToString() == "8") 
     { 
      //DO THINGS 
     } 

aber, wenn die Zeichenfolge xxxCODxx die Anweisung gibt true zurück.

Ich denke, reguläre Ausdrücke kann mir helfen, aber ich habe nie mit C# verwendet ...

+0

Ja, es könnte ohne RegEx lösen - es ist ein geben gehen sehen, was passiert, ich will – BugFinder

+0

um zu prüfen, ob die Länge der Zeichenfolge 8 Zeichen beträgt. Die ersten 3 Zeichen müssen "COD" sein und die letzten 5 müssen Nummern sein. –

+0

Sie überprüfen also, ob eine Zeichenfolge 'StartsWith' COD? .. Ich bin auch überrascht, dass überhaupt funktioniert, da' ToLower' niemals 'COD' enthalten wird – Sayse

Antwort

0

Sie können entweder reguläre Ausdrücke verwenden:

Regex.IsMatch(text, "^COD\\d{5}$"); 

Oder Ihre eigene Lösung:

string txt = inputText1.ToLower(); 
if (txt.StartsWith("cod") && txt.Length == "8") 
    { 
      int a = 0; 
      int.TryParse(txt.Substring(3), out a); 
      if(a!=0){ 
      //DO THINGS 
      } 
    } 
1

Versuchen:

inputText1.ToLower().StartsWith("cod") && inputText1.Length == 8 

Oder wenn Sie wirklich es mit Regex wollen, dies das richtige Muster sein:

Regex.IsMatch(inputText1, "COD\w{5}"); 
+0

Das '\ w' sollte' \ d' sein, aber das ist definitiv nicht 't eine Aufgabe für Regex – Sayse

+0

_ "CODxxxxx" (x = Nummer) _ - die Nummer Validierung fehlt – fubo

+0

oh ja, du hast Recht ... wenn x eine Zahl sein soll, muss es ein \ d sein – Bambuk

1

regulären Ausdruck Versuchen:

bool correct = Regex.IsMatch(inputText1, "^COD[0-9]{5}$"); 

Wenn Sie Fall ignoriert werden sollen (d Cod, cOD usw. sollen korrekt) sein, nur Option hinzufügen:

bool correct = Regex.IsMatch(inputText1, "^COD[0-9]{5}$", RegexOptions.IgnoreCase); 
1

Sie können es auch

string input = "COD12345"; 
bool result = input.StartsWith("COD") && input.Skip(3).All(x => char.IsDigit(x)) && input.Length == 8;