📝

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

2021/06/12に公開

アプリの検索機能に当初 ICU4J を使っていたのですが、アプリサイズがあまりにも大きくなるため作りました!
Java のをそのまま持ってきただけですが、Kotlin で書いたという記事が見当たらなかったので…

コード

object StringConvert {
  fun hiraganaToKatakana(str: String) =
    str.map {
      if (it.code in 0x3041..0x3093) {
        it + 0x60
      } else {
        it
      }
    }.joinToString("")
}

テスト

class StringConvertTest {
  @get:Rule
  val rule: TestRule = InstantTaskExecutorRule()

  @Test
  fun hiraganaToKatakanaTest() {
    MatcherAssert.assertThat(
      StringConvert.hiraganaToKatakana("ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞ"),
      `is`("ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾ")
    )

    MatcherAssert.assertThat(
      StringConvert.hiraganaToKatakana("ただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽ"),
      `is`("タダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポ")
    )

    MatcherAssert.assertThat(
      StringConvert.hiraganaToKatakana("まみむめもゃやゅゆょよらりるれろゎわをん"),
      `is`("マミムメモャヤュユョヨラリルレロヮワヲン")
    )
  }
}

余談

String に map や filter が生えていて、char 型にしてくれるのはありがたいですね!
ちなみにカタカナを全角から半角にするのは記事がなかったので、愚直にマッピングしました(^^;
どなたかの参考になれば幸いです。

Discussion