このコードを使用して、私の文字列に英数字以外の文字が含まれているかどうかを確認しています。
NSString *initials = @"Å漢";
NSCharacterSet *unwantedCharacters = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
// See if we can find any of the unwanted characters
return [initials rangeOfCharacterFromSet:unwantedCharacters].location == NSNotFound;
コードはtrueを返しています。無効な文字のÅと漢が見つからないのはなぜですか?
回答:
回答№1は1のドキュメントから alphanumericCharacterSet
:
非公式には、このセットはアルファベット、音節、表意文字、および数字の基本単位として使用されるすべての文字のセットです。
あなたが投稿した2文字は実際には英数字。あなたのコメントに基づいて、あなたはそれをUnicode文字と数字の小さなサブセットであるASCII文字と数字に制限したいです。簡単に
NSCharacterSet *lettersAndNumbers = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"];
NSCharacterSet *unwantedCharacters = [lettersAndNumbers invertedSet];
回答№2の場合は-1
NSNotFoundはNSIntegerMaxとして定義されています。64ビットシステムでは9223372036854775807になります。