NSCharacterSetは日本語に対応しない?


皆さんはどうやって日本語文字の判定をしているのだろうか?
NSCharacterSetのalphanumericCharacterSetを使うと日本語もアルファベットの一種として判定してしまうようなのだが。
NSScannerでやっても漢字がアルファベットとマッチしてしまう。
唯一うまく行った方法はURLエンコードして、エラーでNULLが返ってくることで日本語だとわかる方法だった。でも、これは多分将来的に使えなくなる方法かもしれない。
なお、下記でinitialには文字列の頭文字(最初の1字)が入っていて、これが日本語かどうかを調べたいのである。
NSString* escapedUrlString = [initial stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
if (escapedUrlString != nil) {
if ([[NSScanner scannerWithString:initial] scanInt:nil]) {
initial = @”#”; // Number!
}
} else {
initial = @”*”; // Kaiji!
}
どうすればいい。もう二日も調べてわからない。

【追記】2011年8月21日:
iOS4.0以降なら正規表現が使えるようだ。以下でいける。
NSError* error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@”^[a-zA-Z0-9]*$” options:0 error:&error];
if ([regex numberOfMatchesInString:initial options:0 range:NSMakeRange(0, [initial length])] > 0) { }

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中