Es gibt mehrere Ansätze, die Sie dieses Problem zu lösen verwenden könnte, werde ich ein paar Bewertung über.
Mit der String.Split()
Methode
Sie könnten die String.Split()
Methode verwenden, um eine Zeichenfolge zu brechen in es auf ein Trennzeichen basiert einzelnen Komponenten ist. In diesem Fall könnten Sie ein Leerzeichen als Trennzeichen verwenden, um die einzelne Worte zu erhalten:
// Get your words, removing any empty entries along the way
var words = YourTextBox.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
// Determine how many words you have here
if(words.Length != 2)
{
// Tell the user they made a horrible mistake not typing two words here
}
einen regulären Ausdruck
Zusätzlich verwenden, könnten Sie versuchen, dies über einen regulären Ausdruck zur Lösung der Regex.IsMatch()
mit Methode:
// Check for exactly two words (and allow for beginning and trailing spaces)
if(!Regex.IsMatch(input,@"^(\s+)?\w+\s+\w+(\s+)?"))
{
// There are not two words, do something
}
Der Ausdruck selbst ein bisschen beängstigend aussehen kann, aber es setzt mich wie folgt zusammen:
Ein "Wort" -Zeichen \w
ist ein Sonderzeichen in regulären Ausdrücken, das eine Ziffer, einen Buchstaben oder einen Unterstrich darstellen kann und entspricht [a-zA-Z0-9_]
.
Unter Nutzung von regulären Ausdrücken RegularExpressionAttribute
MVC
Schließlich, da Sie MVC verwenden, können Sie die Vorteile des [RegularExpressionValidation]
Attribut auf dem Modell selbst übernehmen könnte:
[RegularExpression(@"^(\s+)?\w+\s+\w+(\s+)?", ErrorMessage = "Exactly two words are required.")]
public string YourProperty { get; set; }
Dies wird Ihnen erlauben Rufen Sie einfach die ModelState.IsValid
innerhalb Ihrer Controller - Aktion an, um zu sehen, ob Ihr Modell Fehler aufweist oder nicht:
// This will check your validation attributes like the one mentioned above
if(!ModelState.IsValid)
{
// You probably have some errors, like not exactly two words
}
Was über einen Ausdruck, der etwas wie "Cpl \ 3 John Smith" oder "Mr. John Smith? Ich habe '@'^(\ s +)? [A-Za-z _.-] + \ s \ w + \ s \ w + (\ s +)? $ "' –
Möchten Sie diese zusätzlich zu Ihrem vorherigen Fall zulassen oder als komplett separates Set? Da diese technisch aus drei Wörtern bestehen. –
Ja, zusätzlich zu meinem vorherigen Fall. 3 ist das Maximum und das Minimum –