NSStringで特殊文字、つまりa-z、A-Z、0-9以外のものをチェックしたい。
存在する特殊文字の数やその位置を確認する必要はありません。特定の文字列に文字が含まれているかどうかを確認するだけです。もしそうなら、私は「エラー!」または同様の何かを表示できるようにしたいと思います。
たとえば、jHfd9982は問題ありませんが、asdJh992 @は問題です。
また、アクセント、分音記号などを含む文字は許可されません。
これについてどうすればいいですか?
ありがとう!
マイケル
NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet];
if ([aString rangeOfCharacterFromSet:set].location != NSNotFound) {
NSLog(@"This string contains illegal characters");
}
正規表現を使用することもできます(この構文はRegexKitLiteからです: http://regexkit.sourceforge.net ):
if ([aString isMatchedByRegex:@"[^a-zA-Z0-9]"]) {
NSLog(@"This string contains illegal characters");
}
ここで、文字列に特殊文字があるかどうかを確認するために使用できるコード
NSString *string = <your string>;
NSString *specialCharacterString = @"!~`@#$%^&*-+();:={}[],.<>?\\/\"\'";
NSCharacterSet *specialCharacterSet = [NSCharacterSet
characterSetWithCharactersInString:specialCharacterString];
if ([string.lowercaseString rangeOfCharacterFromSet:specialCharacterSet].length) {
NSLog(@"contains special characters");
}
文字列内に文字が見つからない場合に文字セットを使用してNSStringを検索すると、rangeOfCharacterFromSet:は{NSNotFound、0}の範囲を返します
文字セットは[NSCharacterSet symbolCharacterSet]または独自のセットのようになります。受け入れ可能な文字のセットを持つことができるように、文字セットを反転することもできます。
任意の文字列(テキストフィールドテキストを含む)から特殊文字と数字を削除する場合、編集中に以下の行が非常に便利です。
#define ACCEPTABLE_CHARACTERS @"!~`@#$%^&*-+();:=_{}[],.<>?\\/|\"\'0123456789"
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *cs = [NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return (![string isEqualToString:filtered]) ? NO : YES;
}
このコードでは、UITextField入力に数値のみを使用できます。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([string rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location != NSNotFound)
return NO;
else
return YES;
}