split
Платформа и требования к версии: Common (1.0)
fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List<String>
Разбивает эту символьную последовательность на список строк по вхождениям указанных разделителей.
Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего вхождения разделителя (или в начале этой символьной последовательности, если таких вхождений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит разделителей, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся одним из разделителей, полученный список будет заканчиваться пустой строкой.
Чтобы избежать неоднозначных результатов, когда строки в разделителях содержат общие символы, этот метод обрабатывает строку от начала до конца и на каждой позиции сопоставляет первый элемент из разделителей, который совпадает с разделителем в данном экземпляре на этой позиции.
Параметры
Одна или несколько строк, используемых в качестве разделителей.
true для игнорирования регистра символов при сопоставлении разделителя. По умолчанию false.
Максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.
Примеры
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>
Разбивает эту символьную последовательность на список строк по вхождениям указанных разделителей.
Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего вхождения разделителя (или в начале этой символьной последовательности, если таких вхождений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит разделителей, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся одним из разделителей, полученный список будет заканчиваться пустой строкой.
Параметры
Один или несколько символов, используемых в качестве разделителей.
true для игнорирования регистра символов при сопоставлении разделителя. По умолчанию false.
Максимальное количество возвращаемых подстрок.
Примеры
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>
Разбивает эту символьную последовательность на список строк по совпадениям с заданным регулярным выражением.
Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего совпадения с регулярным выражением (или в начале этой символьной последовательности, если совпадений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит подпоследовательностей, совпадающих с регулярным выражением, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся совпадением с регулярным выражением, полученный список будет заканчиваться пустой строкой.
Параметры
Неотрицательное значение, задающее максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.
Примеры
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, эта функция не удаляет из результата завершающие пустые строки.
Последний элемент полученного списка соответствует подпоследовательности, которая начинается сразу после последнего совпадения с регулярным выражением (или в начале этой символьной последовательности, если совпадений не было) и заканчивается в конце этой символьной последовательности. Это означает, что если эта символьная последовательность не содержит подпоследовательностей, совпадающих с регулярным выражением, полученный список будет содержать один элемент, соответствующий всей символьной последовательности. Это также означает, что для символьных последовательностей, заканчивающихся совпадением с регулярным выражением, полученный список будет заканчиваться пустой строкой.
Параметры
Неотрицательное значение, задающее максимальное количество возвращаемых подстрок. По умолчанию равно нулю, что означает отсутствие ограничения.
Примеры
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