Stringクラスにひらがな・カタカナ変換をextensionする

  • 21
    Like
  • 0
    Comment
More than 1 year has passed since last update.

ひらがな・カタカナについて

  • "ひらがな"とは、0x3041の"ぁ"から0x3096の"ゖ"とする
  • "カタカナ"とは、0x30A1の"ァ"から0x30F6の"ヶ"とする
  • 半角カタカナは無視

コード

extension String {
    func katakana() -> String {
        var str = ""

        // 文字列を表現するUInt32
        for c in unicodeScalars {
            if c.value >= 0x3041 && c.value <= 0x3096 {
                str.append(UnicodeScalar(c.value+96))
            } else {
                str.append(c)
            }
        }

        return str
    }

    func hiragana() -> String {
        var str = ""
        for c in unicodeScalars {
            if c.value >= 0x30A1 && c.value <= 0x30F6 {
                str.append(UnicodeScalar(c.value-96))
            } else {
                str.append(c)
            }
        }

        return str
    }
}

var hoge = "ほげピヨ"
hoge.katakana()     //"ホゲピヨ"
hoge.hiragana()     //"ほげぴよ"