检查NSString是否有特殊字符

Mic*_*ael 33 cocoa special-characters nsstring

我想检查NSString的特殊字符,即除了az,AZ和0-9之外的任何字符.

我不需要检查有多少特殊字符或它们的位置,我只需要知道特定字符串是否包含任何字符.如果是,那么我希望能够显示"错误!"或类似的东西.

例如, jHfd9982可以,但asdJh992 @不是.

此外,不应允许带有重音符号,变音符号等的字母.

我该怎么做?

谢谢!

迈克尔

Dav*_*ong 111

NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet];

if ([aString rangeOfCharacterFromSet:set].location != NSNotFound) {
  NSLog(@"This string contains illegal characters");
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用正则表达式(此语法来自RegexKitLite:http://regexkit.sourceforge.net ):

if ([aString isMatchedByRegex:@"[^a-zA-Z0-9]"]) {
  NSLog(@"This string contains illegal characters");
}
Run Code Online (Sandbox Code Playgroud)

  • 这不应该影响逻辑,但是,在FYI中,字符集中有两个'K'. (5认同)

log*_*han 8

在这里,您可以使用它来检查字符串的代码是否具有任何特殊字符

NSString *string = <your string>;

NSString *specialCharacterString = @"!~`@#$%^&*-+();:={}[],.<>?\\/\"\'";
NSCharacterSet *specialCharacterSet = [NSCharacterSet
                                       characterSetWithCharactersInString:specialCharacterString];

if ([string.lowercaseString rangeOfCharacterFromSet:specialCharacterSet].length) {                
    NSLog(@"contains special characters");
}
Run Code Online (Sandbox Code Playgroud)


use*_*019 6

您想要使用字符集搜索NSString,如果它无法在字符串中找到任何字符,那么rangeOfCharacterFromSet:将返回{NSNotFound,0}的范围

字符集将类似于[NSCharacterSet symbolCharacterSet]或您自己的集合.请注意,您也可以反转字符集,以便拥有一组可接受的字符