0

NSStringユーザーが値を入力したものがありUITextFieldます。ここでは、文字列に次のような値のみが含まれているかどうかを検証する必要があります

'a to z' , 'A to z' , '1 to 9'.

これら以外の文字は必要ありません...助けてください...NSNumberFormatter数値と文字列を使用してNSScannerいますが、両方を同時に検証する方法.

4

2 に答える 2

4

デリゲートUITextFieldを作成し、これをコードの下に貼り付けます:-

// -init、-initWithNibName:bundle: などで

NSCharacterSet *blockedCharacters = [[[NSCharacterSet alphanumericCharacterSet] invertedSet] retain];

- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
{
    return ([characters rangeOfCharacterFromSet:blockedCharacters].location == NSNotFound);
}

// -dealloc で

[blockedCharacters release];

それがあなたを助けることを願っています

于 2013-01-07T07:29:49.400 に答える
1

NSRegularExpression次のように使用できます。

    NSString *string1 = @"abc123";
    NSString *string2 = @"!abc123";
    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-z0-9]" options:NSRegularExpressionCaseInsensitive error:&error];

    NSUInteger numberOfMatches = [regex numberOfMatchesInString:string1 options:0 range:NSMakeRange(0, [string1 length])];
    NSLog(@"string 1 matches: %ld", numberOfMatches);

    numberOfMatches = [regex numberOfMatchesInString:string2 options:0 range:NSMakeRange(0, [string1 length])];
    NSLog(@"string 2 matches: %ld", numberOfMatches);

@"[^a-z0-9]"確認したい文字に合わせてパターンを変更します。は^「このセットにない」ことを意味するため、一致が見つかった場合、フィールドは検証に失敗するはずです。

于 2013-01-07T07:43:57.650 に答える