Wie kann man Regex dazu bringen, alle Buchstaben einer objektiven C-Zeichenfolge zu erfassen?
-
27-10-2019 - |
Frage
Ich versuche, den folgenden regulären Ausdruck zu erhalten, um nur die Buchstaben aus einem Eingabefeld für alphanumerische Zeichen zu erfassen. Es wird jedoch immer die vollständige Zeichenfolge und keiner der Buchstaben von A bis Z zurückgegeben.
Was mache ich falsch?
Es müssen nur alle Buchstaben erfasst werden.Keine seltsamen Zeichen und keine Zahlen, nur A-Z und eine Zeichenfolge, die ich später verwenden kann.
// A default follows
NSString *TAXCODE = txtTaxCode.text;
// Setup default for taxcode
if ([TAXCODE length] ==0)
{
TAXCODE = @"647L";
}
NSError *error = NULL;
NSRegularExpression *regex;
regex = [NSRegularExpression regularExpressionWithPattern:@"/[^A-Z]/gi"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSLog(@"TAXCODE = %@", TAXCODE);
NSLog(@"TAXCODE.length = %d", [TAXCODE length]);
NSLog(@"STC (before regex) = %@", STC);
STC = [regex stringByReplacingMatchesInString:TAXCODE
options:0
range:NSMakeRange(0, [TAXCODE length])
withTemplate:@""];
NSLog(@"STC (after regex) = %@", STC);
Meine Debug-Ausgabe lautet wie folgt:
TAXCODE= 647L
TAXCODE.length= 4
STC (vor Regex)=
STC (nach Regex)= 647L
Lösung
Wenn Sie immer nur Buchstaben an einem Ende haben, können Sie diese verwenden.
NSString *TAXCODE =@"647L";
NSString *newcode = [TAXCODE stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
Wenn Buchstaben gemischt werden, erhalten Sie ein Array, mit dem Sie spielen können.
NSString *TAXCODE =@"L6J47L";
NSArray *newcodeArray = [TAXCODE componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
Andere Tipps
Ich denke, Sie müssen die Perl-Syntax auf dem regulären Ausdruck ablegen.Verwenden Sie @ "[^ A-Z]" als Übereinstimmungszeichenfolge.