Spec-Zone.ru › Kotlin 2

split

kotlin-stdlib/kotlin.text/split

Платформа и требования к версии: Common (1.0)

fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List<String>

Разбивает эту символьную последовательность на список строк по вхождениям указанных разделителей.

Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего вхождения разделителя (или в начале этой символьной последовательности, если таких вхождений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит разделителей, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся одним из разделителей, полученный список будет заканчиваться пустой строкой.

Чтобы избежать неоднозначных результатов, когда строки в разделителях содержат общие символы, этот метод обрабатывает строку от начала до конца и на каждой позиции сопоставляет первый элемент из разделителей, который совпадает с разделителем в данном экземпляре на этой позиции.

Параметры

delimiters

Одна или несколько строк, используемых в качестве разделителей.

ignoreCase

true для игнорирования регистра символов при сопоставлении разделителя. По умолчанию false.

limit

Максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.

Примеры

import kotlin.test.*

fun main() { 
   //sampleStart 
   val multiCharDelimiter = "apple--banana--cherry".split("--")
println(multiCharDelimiter) // [apple, banana, cherry]

val multipleSplit = "apple->banana;;cherry:::orange".split("->", ";;", ":::")
println(multipleSplit) // [apple, banana, cherry, orange]

val longerDelimiterFirst = "apple<-banana<--cherry".split("<--", "<-")
println(longerDelimiterFirst) // [apple, banana, cherry]

val shorterDelimiterFirst = "apple<-banana<--cherry".split("<-", "<--")
println(shorterDelimiterFirst) // [apple, banana, -cherry]

val limitSplit = "a->b->c->d->e".split("->", limit = 3)
println(limitSplit) // [a, b, c->d->e]

val emptyInputResult = "".split("sep")
println("emptyInputResult == listOf(\"\") is ${emptyInputResult == listOf("")}") // true

val emptyDelimiterSplit = "abc".split("")
println(emptyDelimiterSplit) // [, a, b, c, ]

val mixedCase = "abcXYZdef".split("xyz")
println(mixedCase) // [abcXYZdef]  // No match with case sensitivity

val mixedCaseIgnored = "abcXYZdef".split("xyz", ignoreCase = true)
println(mixedCaseIgnored) // [abc, def]  // Matches with case insensitivity

val emptyResults = "##a##b##c##".split("##")
println(emptyResults) // [, a, b, c, ]

val consecutiveSeparators = "a--b------c".split("--")
println(consecutiveSeparators) // [a, b, , , c] 
   //sampleEnd
}

fun CharSequence.split(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): List<String>

Разбивает эту символьную последовательность на список строк по вхождениям указанных разделителей.

Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего вхождения разделителя (или в начале этой символьной последовательности, если таких вхождений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит разделителей, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся одним из разделителей, полученный список будет заканчиваться пустой строкой.

Параметры

delimiters

Один или несколько символов, используемых в качестве разделителей.

ignoreCase

true для игнорирования регистра символов при сопоставлении разделителя. По умолчанию false.

limit

Максимальное количество возвращаемых подстрок.

Примеры

import kotlin.test.*

fun main() { 
   //sampleStart 
   val commaSplit = "apple,banana,cherry".split(',')
println(commaSplit) // [apple, banana, cherry]

val charSplit = "apple,banana;cherry".split(',', ';')
println(charSplit) // [apple, banana, cherry]

val limitSplit = "a,b,c,d,e".split(',', limit = 3)
println(limitSplit) // [a, b, c,d,e]

val emptyInputResult = "".split('|')
println("emptyInputResult == listOf(\"\") is ${emptyInputResult == listOf("")}") // true

val mixedCase = "abcXdef".split('x')
println(mixedCase) // [abcXdef]  // No match with case sensitivity

val mixedCaseIgnored = "abcXdef".split('x', ignoreCase = true)
println(mixedCaseIgnored) // [abc, def]  // Matches with case insensitivity

val emptyResults = ",a,b,c,".split(',')
println(emptyResults) // [, a, b, c, ]

val consecutiveSeparators = "a,,b,,,c".split(',')
println(consecutiveSeparators) // [a, , b, , , c] 
   //sampleEnd
}

inline fun CharSequence.split(regex: Regex, limit: Int = 0): List<String>

Разбивает эту символьную последовательность на список строк по совпадениям с заданным регулярным выражением.

Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего совпадения с регулярным выражением (или в начале этой символьной последовательности, если совпадений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит подпоследовательностей, совпадающих с регулярным выражением, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся совпадением с регулярным выражением, полученный список будет заканчиваться пустой строкой.

Параметры

limit

Неотрицательное значение, задающее максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.

Примеры

import kotlin.test.*

fun main() { 
   //sampleStart 
   val digitSplit = "apple123banana456cherry".split(Regex("\\d+"))
println(digitSplit) // [apple, banana, cherry]

val wordBoundarySplit = "The quick brown fox".split(Regex("\\s+"))
println(wordBoundarySplit) // [The, quick, brown, fox]

val limitSplit = "a,b,c,d,e".split(Regex(","), limit = 3)
println(limitSplit) // [a, b, c,d,e]

val patternGroups = "abc-123def_456ghi".split(Regex("[\\-_]\\d+"))
println(patternGroups) // [abc, def, ghi]

val caseInsensitiveSplit = "Apple123Banana45CHERRY".split(Regex("[a-z]+", RegexOption.IGNORE_CASE))
println(caseInsensitiveSplit) // [, 123, 45, ]

val emptyInputResult = "".split(Regex("sep"))
println("emptyInputResult == listOf(\"\") is ${emptyInputResult == listOf("")}") // true

val emptyDelimiterSplit = "abc".split(Regex(""))
println(emptyDelimiterSplit) // [, a, b, c, ]

val splitByMultipleSpaces = "a  b    c".split(Regex("\\s+"))
println(splitByMultipleSpaces) // [a, b, c]

val splitBySingleSpace = "a  b    c".split(Regex("\\s"))
println(splitBySingleSpace) // [a, , b, , , , c] 
   //sampleEnd
}

Платформа и требования к версии: JVM (1.0)

fun CharSequence.split(regex: Pattern, limit: Int = 0): List<String>

Разбивает эту символьную последовательность по совпадениям с заданным регулярным выражением.

Эта функция отличается от метода Pattern.split двумя важными особенностями:

  • функция возвращает результат в виде List<String>, а не Array<String>;

  • если limit не задан или задан равным 0, эта функция не удаляет из результата завершающие пустые строки.

Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего совпадения с регулярным выражением (или в начале этой символьной последовательности, если совпадений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит подпоследовательностей, совпадающих с регулярным выражением, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся совпадением с регулярным выражением, полученный список будет заканчиваться пустой строкой.

Параметры

limit

Неотрицательное значение, задающее максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.

Примеры

import kotlin.test.*
import java.util.*
import java.util.regex.*

fun main() { 
   //sampleStart 
   val digitSplit = "apple123banana456cherry".split(Pattern.compile("\\d+"))
println(digitSplit) // [apple, banana, cherry]

val wordBoundarySplit = "The quick brown fox".split(Pattern.compile("\\s+"))
println(wordBoundarySplit) // [The, quick, brown, fox]

val limitSplit = "a,b,c,d,e".split(Pattern.compile(","), limit = 3)
println(limitSplit) // [a, b, c,d,e]

val patternGroups = "abc-123def_456ghi".split(Pattern.compile("[\\-_]\\d+"))
println(patternGroups) // [abc, def, ghi]

val caseInsensitiveSplit = "Apple123Banana45CHERRY".split(Pattern.compile("[a-z]+", Pattern.CASE_INSENSITIVE))
println(caseInsensitiveSplit) // [, 123, 45, ]

val emptyInputResult = "".split(Pattern.compile("sep"))
println("emptyInputResult == listOf(\"\") is ${emptyInputResult == listOf("")}") // true

val emptyDelimiterSplit = "abc".split(Pattern.compile(""))
println(emptyDelimiterSplit) // [a, b, c, ]

val splitByMultipleSpaces = "a  b    c".split(Pattern.compile("\\s+"))
println(splitByMultipleSpaces) // [a, b, c]

val splitBySingleSpace = "a  b    c".split(Pattern.compile("\\s"))
println(splitBySingleSpace) // [a, , b, , , , c] 
   //sampleEnd
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.text/split.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API