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

この記事からわかること
- SwiftのCFStringTransformとは?
- 文字を変換する方法
- ひらがな→カタカナや数字、アルファベット、半角、全角など
- CFStringで指定できる変換識別子の種類
index
[open]
\ アプリをリリースしました /
公式リファレンス:CFStringTransformメソッド
CFStringTransform
SwiftのCFStringTransformメソッドはCore FoundationのCFString
を操作するためのメソッドで、文字列の変換や正規化を行うことが可能です。
func CFStringTransform(
_ string: CFMutableString!,
_ range: UnsafeMutablePointer<CFRange>!,
_ transform: CFString!,
_ reverse: Bool
) -> Bool
- string:対象文字列
- range:文字の対象範囲。nullで文字全体
- transform:変換の方式
- reverse:trueで方式の逆変換
引数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
の引数reverse
にtrue
を渡して以下のように実装します。
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!
// 発音記号を削除
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。