6

ロシア語の文字が a に存在するかどうかを確認するNSString必要があります。

そのために次のコードを使用しています。

NSCharacterSet * set = 
 [[NSCharacterSet characterSetWithCharactersInString:@"БГДЁЖИЙЛПФХЦЧШЩЪЫЭЮЯ"] 
   invertedSet];

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

return check;

しかし、それは常に戻ってきFALSEます。

私のコードで何が間違っているのか、誰か教えてもらえますか?

ありがとう

4

2 に答える 2

5

の回答を使用dasblinkenlightしましたが、小文字を含む完全なロシア語のアルファベットを含めました。

@interface NSString (Russian)
- (BOOL)hasRussianCharacters;
@end
@implementation NSString (Russian)
- (BOOL)hasRussianCharacters{
    NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"];
    return [self rangeOfCharacterFromSet:set].location != NSNotFound;
}
@end
于 2013-07-26T13:34:42.170 に答える
3

現在、条件は、文字列にキリル文字が存在することではなく、ロシア語以外 (技術的には非キリル文字) の文字が文字列に含まれていないことを確認します。コードはYES、ラテン アルファベットに対応する文字を持たないキリル文字のみで構成される文字列に対してのみ返されます1

この問題を解決するには、次のように反転を削除し、チェックを反転します。

NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"БГДЁЖИЙЛПФХЦЧШЩЪЫЬЭЮЯ"];

return [nameValue rangeOfCharacterFromSet:set].location != NSNotFound;


1リストにソフトストップを含めるのを忘れましЬた。小文字の のように見えますbが、同じ文字ではありません。

于 2012-09-02T11:16:05.253 に答える