在NSString中查找俄语字符

Rac*_*hit 6 string objective-c string-matching nsstring ios

我必须检查一个俄语字符是否存在NSString.

我正在使用以下代码:

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

BOOL check =  ([nameValue rangeOfCharacterFromSet:set].location == NSNotFound); 

return check;
Run Code Online (Sandbox Code Playgroud)

但它总是回归FALSE.

任何人都可以告诉我我的代码有什么问题吗?

谢谢

Shm*_*idt 5

我使用了dasblinkenlight答案但我包括完整的俄语字母,包括小写字符:

@interface NSString (Russian)
- (BOOL)hasRussianCharacters;
@end
@implementation NSString (Russian)
- (BOOL)hasRussianCharacters{
    NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"??????????????????????????????????????????????????????????????????"];
    return [self rangeOfCharacterFromSet:set].location != NSNotFound;
}
@end
Run Code Online (Sandbox Code Playgroud)


das*_*ght 3

目前,您的条件检查字符串中是否缺少非俄语(从技术上讲,非西里尔字母)字符,而不是字符串中是否存在西里尔字母。您的代码将仅返回完全由西里尔字符组成且在拉丁字母表1YES中没有等效字符的字符串。

\n\n

要解决此问题,请删除反转,然后反转检查,如下所示:

\n\n
NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"\xd0\x91\xd0\x93\xd0\x94\xd0\x81\xd0\x96\xd0\x98\xd0\x99\xd0\x9b\xd0\x9f\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xaa\xd0\xab\xd0\xac\xd0\xad\xd0\xae\xd0\xaf"];\n\nreturn [nameValue rangeOfCharacterFromSet:set].location != NSNotFound;\n
Run Code Online (Sandbox Code Playgroud)\n\n


\n 1您忘记\xd0\xac在列表中包含软停止符,它看起来像小写字母b,但它不是同一个字符。

\n