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
// ひらがな→カタカナ
public 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)
}
}
備考
reverse
に true
を渡すと、カタカナ→ひらがな変換になります。
transform
の値を変えると、他にも様々な変換ができます。
たとえば .fullwidthToHalfwidth
を渡すと全角→半角変換になります。