SMALL MAKE

by EIJI NAKAI

PROGRAMING

iOS

Swiftで半角ASCII文字判定

2014-09-03 14:02

前にも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()

以上