LoginSignup
5
3

More than 5 years have passed since last update.

Kotlin: 文字列変換 先頭を大文字・小文字に / キャメルケース・スネークケース

Last updated at Posted at 2018-06-25

Kotlin で文字列を変換するコードを書きました。 今回やったのは次の4つです。

  • 先頭を小文字にする
  • 先頭を大文字にする
  • スネークケースの文字列をキャメルケースにする
  • キャメルケースの文字列をスネークケースにする

GitHub で公開しており、 build.gradle に記述することでプロジェクト内で使用可能です。
https://github.com/KenjiOhtsuka/kotlin-case-changer

いずれも拡張関数で書いています。

コード

先頭を小文字にする

fun String.beginWithLowerCase(): String {
    return when (this.length) {
        0 -> ""
        1 -> this.toLowerCase()
        else -> this[0].toLowerCase() + this.substring(1)
    }
}

正規表現を使う方法もありますね。

先頭を大文字にする

fun String.beginWithUpperCase(): String {
    return when (this.length) {
        0 -> ""
        1 -> this.toUpperCase()
        else -> this[0].toUpperCase() + this.substring(1)
    }
}

使いみちはないかもしれませんが、小文字にするメソッドがあったので大文字にするメソッドも作りました。

キャメルケースにする

fun String.toCamelCase(): String {
    return this.split('_').map {
        it.beginWithUpperCase() } .joinToString("")
}

もともとスネークケースのものに対してのみ有効です。

スネークケースにする

fun String.toSnakeCase(): String {
    var text: String = ""
    var isFirst = true
    this.forEach {
        if (it.isUpperCase()) {
            if (isFirst) isFirst = false
            else text += "_"
            text += it.toLowerCase()
        } else {
            text += it
        }
    }
    return text
}

もともとキャメルケースの文字列に対して有効です。 正規表現も考えましたがすぐには思いつきませんでした。

Java から呼び出す場合は?

Java から呼び出す際は、 CaseChanger.method(StringObject) という形にします。

(拙ブログにあった記事をほぼそのまま移しました。)

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3