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.
任何人都可以告诉我我的代码有什么问题吗?
谢谢
我使用了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)
目前,您的条件检查字符串中是否缺少非俄语(从技术上讲,非西里尔字母)字符,而不是字符串中是否存在西里尔字母。您的代码将仅返回完全由西里尔字符组成且在拉丁字母表1YES中没有等效字符的字符串。
要解决此问题,请删除反转,然后反转检查,如下所示:
\n\nNSCharacterSet * 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;\nRun Code Online (Sandbox Code Playgroud)\n\n\xd0\xac在列表中包含软停止符,它看起来像小写字母b,但它不是同一个字符。\n
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |