split To Sequence
Версия Kotlin: 1.0
fun CharSequence.splitToSequence(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): Sequence<String>
Разбивает эту последовательность символов на последовательность строк по вхождениям указанных разделителей.
Последний элемент результирующей последовательности соответствует подпоследовательности, начинающейся сразу после последнего вхождения разделителя (или в начале этой последовательности символов, если таких вхождений нет) и заканчивающейся в конце этой последовательности символов. Это означает, что если эта последовательность символов не содержит разделителей, результирующая последовательность будет содержать один элемент, соответствующий всей последовательности символов. Также это означает, что для последовательностей символов, заканчивающихся одним из разделителей, результирующая последовательность будет заканчиваться пустой строкой.
Чтобы избежать неоднозначных результатов, когда строки в разделителях содержат общие символы, этот метод обрабатывает строку от начала до конца и в каждой позиции находит первый элемент из разделителей, совпадающий со строкой в этой позиции.
Параметры
Одна или несколько строк, используемых в качестве разделителей.
true для игнорирования регистра символов при сопоставлении разделителя. По умолчанию false.
Максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.
Примеры
import kotlin.test.*
fun main() {
//sampleStart
fun Sequence<String>.toPrettyString() = joinToString(", ", "[", "]")
val multiCharDelimiter = "apple--banana--cherry".splitToSequence("--").toPrettyString()
println(multiCharDelimiter) // [apple, banana, cherry]
val multipleSplit = "apple->banana;;cherry:::orange".splitToSequence("->", ";;", ":::").toPrettyString()
println(multipleSplit) // [apple, banana, cherry, orange]
val longerDelimiterFirst = "apple<-banana<--cherry".splitToSequence("<--", "<-").toPrettyString()
println(longerDelimiterFirst) // [apple, banana, cherry]
val shorterDelimiterFirst = "apple<-banana<--cherry".splitToSequence("<-", "<--").toPrettyString()
println(shorterDelimiterFirst) // [apple, banana, -cherry]
val limitSplit = "a->b->c->d->e".splitToSequence("->", limit = 3).toPrettyString()
println(limitSplit) // [a, b, c->d->e]
val emptyInputResult = "".splitToSequence("sep").toList()
println("emptyInputResult == listOf(\"\") is ${emptyInputResult == listOf("")}") // true
val emptyDelimiterSplit = "abc".splitToSequence("").toPrettyString()
println(emptyDelimiterSplit) // [, a, b, c, ]
val mixedCase = "abcXYZdef".splitToSequence("xyz").toPrettyString()
println(mixedCase) // [abcXYZdef] // No match with case sensitivity
val mixedCaseIgnored = "abcXYZdef".splitToSequence("xyz", ignoreCase = true).toPrettyString()
println(mixedCaseIgnored) // [abc, def] // Matches with case insensitivity
val emptyResults = "##a##b##c##".splitToSequence("##").toPrettyString()
println(emptyResults) // [, a, b, c, ]
val consecutiveSeparators = "a--b------c".splitToSequence("--").toPrettyString()
println(consecutiveSeparators) // [a, b, , , c]
//sampleEnd
}
fun CharSequence.splitToSequence(vararg delimiters: Char, ignoreCase: Boolean = false, limit: Int = 0): Sequence<String>
Разбивает эту последовательность символов на последовательность строк по вхождениям указанных разделителей.
Последний элемент результирующей последовательности соответствует подпоследовательности, начинающейся сразу после последнего вхождения разделителя (или в начале этой последовательности символов, если таких вхождений нет) и заканчивающейся в конце этой последовательности символов. Это означает, что если эта последовательность символов не содержит разделителей, результирующая последовательность будет содержать один элемент, соответствующий всей последовательности символов. Также это означает, что для последовательностей символов, заканчивающихся одним из разделителей, результирующая последовательность будет заканчиваться пустой строкой.
Параметры
Один или несколько символов, используемых в качестве разделителей.
true для игнорирования регистра символов при сопоставлении разделителя. По умолчанию false.
Максимальное количество возвращаемых подстрок.
Примеры
import kotlin.test.*
fun main() {
//sampleStart
fun Sequence<String>.toPrettyString() = joinToString(", ", "[", "]")
val commaSplit = "apple,banana,cherry".splitToSequence(',').toPrettyString()
println(commaSplit) // [apple, banana, cherry]
val charSplit = "apple,banana;cherry".splitToSequence(',', ';').toPrettyString()
println(charSplit) // [apple, banana, cherry]
val limitSplit = "a,b,c,d,e".splitToSequence(',', limit = 3).toPrettyString()
println(limitSplit) // [a, b, c,d,e]
val emptyInputResult = "".splitToSequence('|').toList()
println("emptyInputResult == listOf(\"\") is ${emptyInputResult == listOf("")}") // true
val mixedCase = "abcXdef".splitToSequence('x').toPrettyString()
println(mixedCase) // [abcXdef] // No match with case sensitivity
val mixedCaseIgnored = "abcXdef".splitToSequence('x', ignoreCase = true).toPrettyString()
println(mixedCaseIgnored) // [abc, def] // Matches with case insensitivity
val emptyResults = ",a,b,c,".splitToSequence(',').toPrettyString()
println(emptyResults) // [, a, b, c, ]
val consecutiveSeparators = "a,,b,,,c".splitToSequence(',').toPrettyString()
println(consecutiveSeparators) // [a, , b, , , c]
//sampleEnd
}
inline fun CharSequence.splitToSequence(regex: Regex, limit: Int = 0): Sequence<String>
Разбивает эту последовательность символов на последовательность строк по совпадениям с заданным регулярным выражением.
Последний элемент результирующей последовательности соответствует подпоследовательности, начинающейся сразу после последнего совпадения с регулярным выражением (или в начале этой последовательности символов, если совпадений нет) и заканчивающейся в конце этой последовательности символов. Это означает, что если эта последовательность символов не содержит подпоследовательностей, соответствующих регулярному выражению, результирующая последовательность будет содержать один элемент, соответствующий всей последовательности символов. Также это означает, что для последовательностей символов, заканчивающихся совпадением с регулярным выражением, результирующая последовательность будет заканчиваться пустой строкой.
Параметры
Неотрицательное значение, задающее максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.
Примеры
import kotlin.test.*
fun main() {
//sampleStart
val colors = "green, red , brown&blue, orange, pink&green"
val regex = "[,\\s]+".toRegex()
val mixedColor = colors.splitToSequence(regex)
.onEach { println(it) }
.firstOrNull { it.contains('&') }
println(mixedColor) // brown&blue
//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-to-sequence.html