Swiftで半角ASCII文字判定


前にもObjective-Cで同じ課題について書いたが、かなり昔の話しで正規表現を使うやり方だった。今回は NSCharacterSet を使う。

今回やりたいのは文字列の1文字目が半角文字か日本語漢字なのかの判定。

結論的には以下。titleStrの1文字目が半角文字かどうかを unicodeScalarsを使い、valueで判定。

let hankaku = NSCharacterSet(range: NSMakeRange(0x20, 0x7e))
let titleUniStr = titleStr.unicodeScalars
let initialChar = titleUniStr[titleUniStr.startIndex]
if hankaku.longCharacterIsMember(initialChar.value) {
    println("半角")
} else {
    println("全角")
}

なお、iOSには文字列の判定に使える以下のようなセットが予め用意されているが、これらは全角判定に使えない。なぜなら、漢字も下記の letters だし、全角の数字も下記の digits に含まれるからだ。

let letters = NSCharacterSet.letterCharacterSet()
let digits = NSCharacterSet.decimalDigitCharacterSet()
let alphanum = NSCharacterSet.alphanumericCharacterSet()

以上

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中