[iOS 10] 全角文字列を半角文字列に変換する

2016.11.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

文字列を変換する

NSString の applyingTransform() というメソッドを利用すれば、文字列を簡単に変換することができます。
このメソッドで全角文字列を半角文字列に変換する方法について説明します。

サンプルコード

let before = "123456789@abcdefg"
if let after = before.applyingTransform(.fullwidthToHalfwidth, reverse: false) {
    print("before = \(before)")
    print("after = \(after)")
}

実行結果

before = 123456789@abcdefg
after = 123456789@abcdefg

解説

全角文字列の before 変数に対して applyingTransform() メソッドを実行しています。
全角 <-> 半角 の変換を行う場合は、第一引数で fullwidthToHalfwidth を指定します。
第二引数ではどちらの方向に変換するかを指定します。
false の場合は 全角 -> 半角true の場合は 半角 -> 全角 となります。

変換結果を変数 after に代入し、それぞれの変数を出力しています。
不正な変換の場合は nil が返ります。

このメソッドは自動で該当箇所のみの変換も行ってくれるので、場合によっては便利に使えるかもしれません。

before = 123456789@abcdefg
after = 123456789@abcdefg

StringTransform

StringTransform は applyingTransform() メソッドの第一引数に指定する型ですが、これは iOS 10 から利用できるようになった NSString のエイリアスです。
よって、このメソッドは iOS 9 から利用することができますが、StringTransform を指定できるのは iOS 10 からとなります。

extension StringTransform {

    @available(iOS 9.0, *)
    public static let latinToKatakana: StringTransform

    @available(iOS 9.0, *)
    public static let latinToHiragana: StringTransform

    @available(iOS 9.0, *)
    public static let latinToHangul: StringTransform

    @available(iOS 9.0, *)
    public static let latinToArabic: StringTransform

    @available(iOS 9.0, *)
    public static let latinToHebrew: StringTransform

    @available(iOS 9.0, *)
    public static let latinToThai: StringTransform

    @available(iOS 9.0, *)
    public static let latinToCyrillic: StringTransform

    @available(iOS 9.0, *)
    public static let latinToGreek: StringTransform

    @available(iOS 9.0, *)
    public static let toLatin: StringTransform

    @available(iOS 9.0, *)
    public static let mandarinToLatin: StringTransform

    @available(iOS 9.0, *)
    public static let hiraganaToKatakana: StringTransform

    @available(iOS 9.0, *)
    public static let fullwidthToHalfwidth: StringTransform

    @available(iOS 9.0, *)
    public static let toXMLHex: StringTransform

    @available(iOS 9.0, *)
    public static let toUnicodeName: StringTransform

    @available(iOS 9.0, *)
    public static let stripCombiningMarks: StringTransform

    @available(iOS 9.0, *)
    public static let stripDiacritics: StringTransform
}

その他の変換

StringTransform を見てみると、全角 <-> 半角 以外にも ひらがな <-> カタカナ の変換などが可能ということがわかります。
またラテン語への変換もできますが、これはあくまで 表記の変換 であり 翻訳 ではないということに注意してください。

さいごに

applyingTransform() メソッドを利用すれば、簡単に 全角 <-> 半角ひらがな <-> カタカナ の変換を行うことができます。
アプリでガードをかけたい場合に利用してみてはいかがでしょうか。

リンク

ミレニアム・ファルコン製作日記 #43

43 号 表紙

mfd_43_1

パーツ

mfd_43_2

mfd_43_3

mfd_43_4

成果

mfd_43_5

今回の作業は以下の 1 つでした。

  • 着陸脚カバープレートを取り付ける

大きめのパーツに対する作業でした。
「着陸脚カバープレート」というものを、対応する外殻プレートのくぼみに合わせて磁石でくっつけました。
今のところ、これがどのような役割を果たすかはまだわかりません。
後の号で外殻フレームに取り付けるまで大切に保管しておきます。

それではまた次回。

May the Force be with you!