📝
Kotlin でひらがなをカタカナに変換する
アプリの検索機能に当初 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