1

今、アプリにフロントエンドチェックを追加して、ユーザーがテキストフィールドに数字のみを入力したかどうかを検出しようとしています。

私が使う:

- (IBAction)checkID:(UITextField *)sender {
if ([sender.text isEqualToString:@""]) {
    sender.text = @"This information is required";
    sender.backgroundColor =[UIColor redColor];
}else if (![sender.text intValue]) {
    sender.text = [sender.text stringByAppendingString:@" is not valid number"];
    sender.backgroundColor =[UIColor redColor];
}
NSLog(@"send.text is %@, intValue is %d",sender.text,[sender.text intValue]);

}

しかし、テキストが数値で始まり、文字列で終わることがわかりました。その intValue はまだ数値です。私のテキストでは、テキストは「00001aa」ですが、intValue は 1 です。

この「00001aa」テキストを除外する他の方法はありますか?

前もって感謝します。

4

1 に答える 1

0

はい、NSRegularExpressionまたはNSCharacterSet(正の数に対して機能します) を使用できます。

正規表現の場合は、^[-+]?[0-9]+$.

NSRegularExpression *numEx = [NSRegularExpression
    regularExpressionWithPattern:@"^[-+]?[0-9]+$" options:0 error:nil
];
NSLog(@"%ld", [numEx numberOfMatchesInString:@"-200" options:0 range:NSMakeRange(0, 4)]);
NSLog(@"%ld", [numEx numberOfMatchesInString:@"001A" options:0 range:NSMakeRange(0, 4)]);

文字セットには、 を使用します[NSCharacterSet decimalDigitCharacterSet]

BOOL isNum = [[NSCharacterSet decimalDigitCharacterSet]
    isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:@"001AA"]
];
于 2012-08-29T03:26:20.843 に答える