【Swift】CFStringTransformで文字の変換!ひらがな→カタカナや半角など

この記事からわかること

  • SwiftCFStringTransformとは?
  • 文字変換する方法
  • ひらがなカタカナ数字アルファベット半角全角など
  • CFStringで指定できる変換識別子種類

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

公式リファレンス:CFStringTransformメソッド

CFStringTransform

SwiftのCFStringTransformメソッドはCore FoundationのCFStringを操作するためのメソッドで、文字列の変換や正規化を行うことが可能です。

func CFStringTransform(
    _ string: CFMutableString!,
    _ range: UnsafeMutablePointer<CFRange>!,
    _ transform: CFString!,
    _ reverse: Bool
) -> Bool

引数stringに渡すのはCFMutableString型である必要があるのでString型などから型変換して渡す必要があります。

また引数transformにはCFString!で定義されているグローバル変数を指定することで文字変換の方法を指定します。後半にまとめてます

ひらがなをカタカナに変換する

ひらがなをカタカナに変換するにはkCFStringTransformHiraganaKatakanaを渡して以下のように実装します。

let string = "こんにちは、世界!"

if let mutableString = NSMutableString(string: string) as CFMutableString? {
    CFStringTransform(mutableString, nil, kCFStringTransformHiraganaKatakana, false)
    let result = mutableString as String
    print(result) // コンニチハ、世界!
}

カタカナをひらがなにする

カタカナをひらがなに変換するにはkCFStringTransformHiraganaKatakanaの引数reversetrueを渡して以下のように実装します。

let string = "コンニチハ、セカイ!"

if let mutableString = NSMutableString(string: string) as CFMutableString? {
    CFStringTransform(mutableString, nil, kCFStringTransformHiraganaKatakana, true)
    let result = mutableString as String
    print(result) // こんにちは、せかい!
}

文字(カタカナや数字、アルファベット)を半角にする

文字(カタカナや数字)を半角に変換するにはkCFStringTransformFullwidthHalfwidthを渡して以下のように実装します。

let string = "コンニチハ、123ABC"

if let mutableString = NSMutableString(string: string) as CFMutableString? {
    CFStringTransform(mutableString, nil, kCFStringTransformFullwidthHalfwidth, false)
    let result = mutableString as String
    print(result) // コンニチハ、123ABC
}

指定できる変換方式識別子

公式リファレンス:CFStringTransform の変換識別子

let kCFStringTransformStripCombiningMarks: CFString!
// 結合記号 (アクセント記号または発音記号) を除去
let kCFStringTransformToLatin: CFString!
// ラテン文字
let kCFStringTransformFullwidthHalfwidth: CFString!
// 全角文字を半角文字に変換する可逆変換の識別子。
let kCFStringTransformLatinKatakana: CFString!
// ラテン語→カタカナに
let kCFStringTransformLatinHiragana: CFString!
// ラテン語→ひらがな
let kCFStringTransformHiraganaKatakana: CFString!
// ひらがな→カタカナ
let kCFStringTransformMandarinLatin: CFString!
// 中国語→ラテン語
let kCFStringTransformLatinHangul: CFString!
// ラテン語→ハングル
let kCFStringTransformLatinArabic: CFString!
// ラテン語→アラビア語
let kCFStringTransformLatinHebrew: CFString!
// ラテン語→ヘブライ語
let kCFStringTransformLatinThai: CFString!
// ラテン語→タイ語
let kCFStringTransformLatinCyrillic: CFString!
// ラテン語→キリル文字
let kCFStringTransformLatinGreek: CFString!
// ラテン語→ギリシャ語
let kCFStringTransformToXMLHex: CFString!
// 印刷可能な ASCII 以外の文字を XML/HTML 数値エンティティに
let kCFStringTransformToUnicodeName: CFString!
// 印刷可能な ASCII 以外の文字を中括弧内の Unicode 文字名に
let kCFStringTransformStripDiacritics: CFString!
// 発音記号を削除

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index