检查NSString包含字母和数字

ADu*_*ude 7 iphone objective-c nsstring

我正在寻找检查NSString包含数字和字母字符的最佳方法.到目前为止我得到的是下面的代码,但这只是告诉我没有输入任何不是数字或字母的字符.

if( [[myNSString stringByTrimmingCharactersInSet:
            [NSCharacterSet alphanumericCharacterSet]] isEqualToString:@""]){    
  //The string only contains alpha or numerical characters.
  //But now I want to check that both character sets are present ?    
}
Run Code Online (Sandbox Code Playgroud)

kov*_*pas 14

只需修剪letterCharacterSet和decimalDigitCharacterSet,并检查生成的字符串是否不等于原始字符串:

if (![[myOriginalString stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]] isEqualToString:myOriginalString] 
     && ![[myOriginalString stringByTrimmingCharactersInSet:[NSCharacterSet letterCharacterSet]] isEqualToString:myOriginalString]) {
...
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你在开头或结尾有字母而另一端有数字,那么kovpas的答案就可以了.如果数字嵌入在字母之间,反之亦然,例如'abc123abc',则会出现问题.这是一个解决方案:

if (![[[str componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""] isEqualToString:str]  
    && ![[[str componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@""] isEqualToString:str]) {  
    ....  
}
Run Code Online (Sandbox Code Playgroud)