Frage

ich auf einer iPhone Anwendung arbeite und muß der eingegebenen Text, um sicherzustellen, nur a bis z und Zahlen besteht.

Ich will nicht der Benutzer andere Sprachen Buchstaben wie solche verwenden, mit Akzenten oder Punkten über sie.

EDIT: Ich bin zu dieser RegEx neu, wenn Sie also bitte einen Code oder einen Link geben Sie mir, werde ich wirklich dankbar sein

.
War es hilfreich?

Lösung

Verwenden Sie einen regulären Ausdruck, wie [0-9a-zA-Z]+. Schauen Sie sich die RegexKit Rahmen für Objective-C, eine Bibliothek für reguläre Ausdrücke, die auf dem iPhone funktioniert.

Sie können dann so etwas wie:

NSString *str = @"abc0129yourcontent";
BOOL isMatch = [str isMatchedByRegex:@"^[0-9a-zA-Z]+$"];

Andere Tipps

Ein weiterer Ansatz (kann wie mit RegEx nicht so elegant sein):

    NSCharacterSet* tSet = [NSCharacterSet characterSetWithCharactersInString:
               @"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
    NSCharacterSet* invSet = [tSet invertedSet];
    NSString* legalS = @"abcdA1";
    NSString* illegalS = @"asvéq1";

    if ([legalS rangeOfCharacterFromSet:invSet].location != NSNotFound)
        NSLog(legalS); // not printed

    if ([illegalS rangeOfCharacterFromSet:invSet].location != NSNotFound)
        NSLog(illegalS); // printed

Der einfachste Weg - vorausgesetzt, Sie als auch für Interpunktion ermöglichen wollen, ist zu prüfen, ob alle Zeichen zwischen ascii sind Werte 32 (Leerzeichen) und 126 (~). Die ASCII-Tabelle rel="nofollow illustriert den Punkt.

Alle Zeichen mit Akzent sind, was wir „high“ ascii zu nennen pflegte, wenn ich Programmierung zum ersten Mal gestartet.

Wenn Sie nicht wollen, Zeichensetzung, damit Sie mehrere Bereichsprüfungen tun werden müssen:

48-57 für Zahlen

65 bis 90 für Großbuchstaben

97-122 für Kleinbuchstaben

, die der RegEx Ansatz machen könnte besser lesbar (Ich kann nicht glauben, dass ich gerade geschrieben habe, dass)

Einfache Implementierung (nehmen von oben bearbeiten nur für schnelle Copy-Paste):

Objective-C:

BOOL onlyEnglishAlphanumerical = ([self.textField.text rangeOfCharacterFromSet:[[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"] invertedSet]].location == NSNotFound);
self.textField.layer.borderWidth = (onlyEnglishAlphanumerical) ? 0 : 1;
if (onlyEnglishAlphanumerical)
{
    //Do the deal
}

Swift:

if (self.textField.text.rangeOfCharacterFromSet(NSCharacterSet.init(charactersInString:"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet) == nil)
{
    //Do the deal
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top