Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Kotlin辞典

  1. トップページ
  2. Kotlin辞典
  3. 文字列.substring() / drop() / take()

文字列.substring() / drop() / take()

Kotlinでは『substring()』で位置を指定した部分文字列の取得、『drop()』『take()』で先頭・末尾からの文字数指定による切り出しができます。

構文
// 位置指定
val sub: String = 文字列.substring(startIndex)
val sub2: String = 文字列.substring(startIndex, endIndex)  // endIndex は含まない

// 先頭・末尾から n 文字
val d: String = 文字列.drop(n)       // 先頭 n 文字を除いた残り
val t: String = 文字列.take(n)       // 先頭 n 文字を取得
val dl: String = 文字列.dropLast(n)  // 末尾 n 文字を除いた残り
val tl: String = 文字列.takeLast(n)  // 末尾 n 文字を取得
メソッド一覧
メソッド概要
文字列.substring(start)start 以降の文字列を返します。
文字列.substring(start, end)start から end(含まない)までの文字列を返します。
文字列.drop(n)先頭 n 文字を取り除いた文字列を返します。
文字列.take(n)先頭 n 文字を返します。
文字列.dropLast(n)末尾 n 文字を取り除いた文字列を返します。
文字列.takeLast(n)末尾 n 文字を返します。
文字列.dropWhile { }条件が true の間、先頭から文字を取り除きます。
文字列.takeWhile { }条件が true の間、先頭から文字を取得します。
サンプルコード
fun main() {
    val s = "Hello, Kotlin!"

    // substring で位置を指定して切り出します。
    println(s.substring(7))       // Kotlin!
    println(s.substring(7, 13))   // Kotlin(13番目は含まない)

    // drop / take で文字数を指定します。
    println(s.take(5))            // Hello
    println(s.drop(7))            // Kotlin!
    println(s.takeLast(7))        // Kotlin!
    println(s.dropLast(7))        // Hello,

    // dropWhile / takeWhile で条件指定
    val csv = "000123"
    println(csv.dropWhile { it == '0' })  // 123(先頭の 0 を除く)
    println(csv.takeWhile { it == '0' })  // 000(先頭の 0 だけ取得)

    // 範囲演算子でも部分文字列を取得できます。
    println(s[0..4])              // Hello(インデックス 0〜4)
}
概要

『substring()』のインデックスは0始まりで、終端インデックスの文字は含まれません。範囲外のインデックスを指定すると『StringIndexOutOfBoundsException』が発生します。

『drop()』と『take()』は安全で、n が文字列長より大きい場合にも例外が発生しないため実用的です。

文字列の長さ確認は文字列.length / isEmpty()を、分割・結合は文字列.split() / joinToString()を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。