Posted at

ひらがな→カタカナ変換(Swift)

More than 1 year has passed since last update.

Swiftでひらがな→カタカナ変換するStringのextensionを実装しました。


環境


  • OS:macOS High Sierra 10.13.1

  • Xcode:9.2 (9C40b)

  • Swift:4.0.3


実装

applyingTransform(_:reverse:) メソッドを使います。


String+Transform.swift

import Foundation

extension String {
// MARK: Public Methods

// ひらがな→カタカナ
func hiraganaToKatakana() -> String {
return self.transform(transform: .hiraganaToKatakana, reverse: false)
}

// MARK: Private Methods

private func transform(transform: StringTransform, reverse: Bool) -> String {
if let string = self.applyingTransform(transform, reverse: reverse) {
return string
} else {
return ""
}
}
}


続いてテストコードです。


StringTransformTests.swift

import XCTest

class StringTransformTests: XCTestCase {
// MARK: Test Methods

// MARK: hiraganaToKatakana

func testHiraganaToKatakanaAll() {
checkHiraganaToKatakana(before: "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゐゆゑよわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゔぁぃぅぇぉっゃゅょゎ",
after: "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤヰユヱヨワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴァィゥェォッャュョヮ")
}

// なぜか半角カナが全角カナに変換される
func testHiraganaToKatakanaHalfwidthKatakanaAll() {
checkHiraganaToKatakana(before: "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴァィゥェォッャュョ",
after: "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴァィゥェォッャュョ")
}

func testHiraganaToKatakanaScramble() {
checkHiraganaToKatakana(before: "testテストてすと検証けんしょう",
after: "testテストテスト検証ケンショウ")
}

// MARK: Private Methods

private func checkHiraganaToKatakana(before: String, after: String) {
XCTAssertEqual(before.hiraganaToKatakana(), after)
}
}



備考

reversetrue を渡すと、カタカナ→ひらがな変換になります。

transform の値を変えると、他にも様々な変換ができます。

たとえば .fullwidthToHalfwidth を渡すと全角→半角変換になります。


参考リンク