Spec-Zone.ru › Kotlin 2

splitToSequence

kotlin-stdlib/kotlin.text/splitToSequence

Версия Kotlin: 1.0

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

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

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

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

Параметры

delimiters

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

ignoreCase

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

limit

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

Примеры

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>

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

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

Параметры

delimiters

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

ignoreCase

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

limit

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

Примеры

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>

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

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

Параметры

limit

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

Примеры

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

Spec-Zone.ru

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