Как найти символ в строке kotlin

Example:

String1 = "AbBaCca";
String2 = "bac";

I want to perform a check that String1 contains String2 or not.

asked Jul 9, 2018 at 5:00

Anisuzzaman Babla's user avatar

Kotlin has stdlib package to perform certain extension function operation over the string, you can check this method it will check the substring in a string, you can ignore the case by passing true/false value. Refer this link

"AbBaCca".contains("bac", ignoreCase = true)

zsmb13's user avatar

zsmb13

84.4k10 gold badges220 silver badges224 bronze badges

answered Jul 9, 2018 at 5:08

Aseem Sharma's user avatar

Aseem SharmaAseem Sharma

1,65312 silver badges19 bronze badges

The most idiomatic way to check this is to use the in operator:

String2 in String1

This is equivalent to calling contains(), but shorter and more readable.

answered Jul 9, 2018 at 6:25

yole's user avatar

yoleyole

91.9k20 gold badges258 silver badges197 bronze badges

3

You can do it by using the “in” – operator, e.g.

val url : String = "http://www.google.de"
val check : Boolean = "http" in url

check has the value true then. 🙂

answered Jun 15, 2021 at 11:39

Iskandir's user avatar

IskandirIskandir

8681 gold badge9 silver badges20 bronze badges

1

See the contains method in the documentation.

String1.contains(String2);

answered Jul 9, 2018 at 5:05

geco17's user avatar

geco17geco17

5,1123 gold badges21 silver badges38 bronze badges

Kotlin has a few different contains function on Strings, see here: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/contains.html.

If you want it to be true that string2 is contained in string1 (ie you want to ignore case), they even have a convenient boolean argument for you, so you won’t need to convert to lowercase first.

answered Jul 9, 2018 at 5:05

htuy42's user avatar

htuy42htuy42

3073 silver badges10 bronze badges

For anyone out there like me who wanted to do this for a nullable String, that is, String?, here is my solution:

operator fun String?.contains(substring:String): Boolean {
    return if (this is String) {
        // Need to convert to CharSequence, otherwise keeps calling my
        // contains in an endless loop.
        val charSequence: CharSequence = this
        charSequence.contains(substring)
    } else {
        false
    }
}

// Uses Kotlin convention of converting 'in' to operator 'contains'
if (shortString in nullableLongString) {
    // TODO: Your stuff goes here!
}

answered Dec 31, 2021 at 0:28

codingjeremy's user avatar

codingjeremycodingjeremy

5,0371 gold badge35 silver badges38 bronze badges

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

1. Найти все индексы персонажа

The indexOf() Функция возвращает только индекс “первого” появления символа в строке, как показано ниже:

fun main() {

    val s = “one, two, three, four, five”

    val c = ‘,’

    val index = s.indexOf(c)

    println(index)        // 3

}

Скачать код

 
Точно так же lastIndexOf() Функция возвращает индекс “последнего” появления символа в строке.

fun main() {

    val s = “one, two, three, four, five”

    val c = ‘,’

    val lastIndex = s.lastIndexOf(c)

    println(lastIndex) // 16

}

Скачать код

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

fun main() {

    val s = “one, two, three, four, five”

    val c = ‘,’

    var index = s.indexOf(c)

    while (index != 1) {

        println(index)

        index = s.indexOf(c, index + 1)

    }

}

Скачать код

результат:

3
8
15
21

 
Это эквивалентно:

fun main() {

    val s = “one, two, three, four, five”

    val c = ‘,’

    var index = 1

    while (s.indexOf(c, index + 1).also { index = it } != 1) {

        println(index)

    }

}

Скачать код

результат:

3
8
15
21

2. Найти все индексы подстроки

Мы можем использовать RegEx, чтобы найти индексы всех вхождений “подстроки” в String. Типичная реализация этого подхода будет выглядеть так:

fun main() {

    val string = “One, Two, Three, Four, Five”

    val pattern = “o”

    val indices = Regex(pattern).findAll(string)

        .map { it.range.first }

        .toList()

    println(indices)        // [7, 18]

}

Скачать код

 
Чтобы включить поиск без учета регистра, укажите IGNORE_CASE вариант регулярного выражения.

fun main() {

    val string = “One, Two, Three, Four, Five”

    val pattern = “o”

    val indices = Regex(pattern, RegexOption.IGNORE_CASE).findAll(string)

        .map { it.range.first }

        .toList()

    println(indices)        // [0, 7, 18]

}

Скачать код

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

fun main() {

    val string = “aaa”

    val pattern = “aa”

    var indices = Regex(pattern).findAll(string).map { it.range.first }.toList()

    println(indices)        // [0]

    indices = Regex(“(?=$pattern)”).findAll(string).map { it.range.first }.toList()

    println(indices)        // [0, 1]

}

Скачать код

Это все о поиске индексов всех вхождений символа или подстроки в строку Kotlin.

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

all

Возвращает true если все символы соответствуют заданному предикату .

fun CharSequence.all(predicate: (Char) -> Boolean): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

any

Возвращает true если последовательность символов содержит хотя бы один символ.

fun CharSequence.any(): Boolean

Возвращает true если хотя бы один символ соответствует заданному предикату .

fun CharSequence.any(predicate: (Char) -> Boolean): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

asIterable

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

fun CharSequence.asIterable(): Iterable<Char>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

asSequence

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

fun CharSequence.asSequence(): Sequence<Char>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

associate

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

fun <K, V> CharSequence.associate(
    transform: (Char) -> Pair<K, V>
): Map<K, V>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

associateBy

Возвращает карту, содержащую символы из данной последовательности символов, проиндексированных ключом, возвращенным функцией keySelector, примененной к каждому символу.

fun <K> CharSequence.associateBy(
    keySelector: (Char) -> K
): Map<K, Char>

Возвращает карту, содержащую значения, предоставленные valueTransform и проиндексированные функциями keySelector, примененными к символам данной последовательности символов.

fun <K, V> CharSequence.associateBy(
    keySelector: (Char) -> K, 
    valueTransform: (Char) -> V
): Map<K, V>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

associateByTo

Заполняет и возвращает изменяемую карту назначения парами «ключ-значение», где ключ предоставляется функцией keySelector, применяемой к каждому символу данной последовательности символов, а значение – это сам символ.

fun <K, M : MutableMap<in K, in Char>> CharSequence.associateByTo(
    destination: M, 
    keySelector: (Char) -> K
): M

Заполняет и возвращает изменяемую карту назначения парами ключ-значение, где ключ предоставляется функцией keySelector, а значение предоставляется функцией valueTransform, применяемой к символам данной последовательности символов.

fun <K, V, M : MutableMap<in K, in V>> CharSequence.associateByTo(
    destination: M, 
    keySelector: (Char) -> K, 
    valueTransform: (Char) -> V
): M

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

associateTo

Заполняет и возвращает изменяемую карту назначения парами «ключ-значение», предоставленными функцией преобразования, применяемой к каждому символу данной последовательности символов.

fun <K, V, M : MutableMap<in K, in V>> CharSequence.associateTo(
    destination: M, 
    transform: (Char) -> Pair<K, V>
): M

Требования к платформе и версии: JVM (1.3), JS (1.3), Native (1.3)

associateWith

Возвращает карту, где ключи являются символами из заданной последовательности символов, а значения создаются функцией valueSelector, примененной к каждому символу.

fun <V> CharSequence.associateWith(
    valueSelector: (Char) -> V
): Map<Char, V>

Требования к платформе и версии: JVM (1.3), JS (1.3), Native (1.3)

associateWithTo

Заполняет и возвращает изменяемую карту назначения парами «ключ-значение» для каждого символа данной последовательности символов, где ключ – это сам символ, а значение предоставляется функцией valueSelector, примененной к этому ключу.

fun <V, M : MutableMap<in Char, in V>> CharSequence.associateWithTo(
    destination: M, 
    valueSelector: (Char) -> V
): M

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

byteInputStream

Создает новый поток ввода байта для строки.

fun String.byteInputStream(
    charset: Charset = Charsets.UTF_8
): ByteArrayInputStream

Требования к платформе и версии: JVM (1.4)

capitalize

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

fun String.capitalize(locale: Locale): String

Требования к платформе и версии: JVM (1.2), JS (1.2), Native (1.2)

chunked

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

fun CharSequence.chunked(size: Int): List<String>

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

fun <R> CharSequence.chunked(
    size: Int, 
    transform: (CharSequence) -> R
): List<R>

Требования к платформе и версии: JVM (1.2), JS (1.2), Native (1.2)

chunkedSequence

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

fun CharSequence.chunkedSequence(size: Int): Sequence<String>

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

fun <R> CharSequence.chunkedSequence(
    size: Int, 
    transform: (CharSequence) -> R
): Sequence<R>

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

codePointAt

Возвращает символ (точка юникода)на указанном индексе.

fun String.codePointAt(index: Int): Int

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

codePointBefore

Возвращает символ (точка юникода)перед указанным индексом.

fun String.codePointBefore(index: Int): Int

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

codePointCount

Возвращает количество точек кода Юникода в указанном текстовом диапазоне данной Строки.

fun String.codePointCount(
    beginIndex: Int, 
    endIndex: Int
): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

coerceAtLeast

Гарантирует, что это значение не меньше указанного минимального значения .

fun <T : Comparable<T>> T.coerceAtLeast(minimumValue: T): T

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

coerceAtMost

Гарантирует, что это значение не превышает указанное значение maximumValue .

fun <T : Comparable<T>> T.coerceAtMost(maximumValue: T): T

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

coerceIn

Гарантирует, что это значение находится в указанном диапазоне minimumValue .. maximumValue .

fun <T : Comparable<T>> T.coerceIn(
    minimumValue: T?, 
    maximumValue: T?
): T

Гарантирует, что это значение находится в указанном диапазоне .

fun <T : Comparable<T>> T.coerceIn(
    range: ClosedFloatingPointRange<T>
): T

fun <T : Comparable<T>> T.coerceIn(range: ClosedRange<T>): T

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

commonPrefixWith

Возвращает prefix самой длинной строки , так что эта последовательность символов и другая последовательность символов начинаются с этого префикса, стараясь не разбивать суррогатные пары. Если этот и другие не имеют общего префикса, возвращает пустую строку.

fun CharSequence.commonPrefixWith(
    other: CharSequence, 
    ignoreCase: Boolean = false
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

commonSuffixWith

Возвращает самый длинный строковый suffix , так что эта последовательность символов и другая последовательность символов заканчиваются этим суффиксом, стараясь не разбивать суррогатные пары. Если этот и другие не имеют общего суффикса, возвращает пустую строку.

fun CharSequence.commonSuffixWith(
    other: CharSequence, 
    ignoreCase: Boolean = false
): String

Требования к платформе и версии: JVM (1.6), JS (1.6), Native (1.6)

compareTo

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

infix fun <T> Comparable<T>.compareTo(other: T): Int

Требования к платформе и версии: JS (1.1)

concat

fun String.concat(str: String): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

contains

Возвращает true если эта последовательность символов содержит указанную другую последовательность символов в качестве подстроки.

operator fun CharSequence.contains(
    other: CharSequence, 
    ignoreCase: Boolean = false
): Boolean

Возвращает true если эта последовательность символов содержит указанный символ char .

operator fun CharSequence.contains(
    char: Char, 
    ignoreCase: Boolean = false
): Boolean

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

operator fun CharSequence.contains(regex: Regex): Boolean

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

contentEquals

Возвращает true , если эта строка равна содержимому указанной CharSequence , в противном случае – false .

fun String.contentEquals(charSequence: CharSequence): Boolean

Возвращает true , если эта строка равна содержимому указанного StringBuffer , иначе false .

fun String.contentEquals(
    stringBuilder: StringBuffer
): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

count

Возвращает длину этой последовательности символов.

fun CharSequence.count(): Int

Возвращает количество символов, соответствующих заданному предикату .

fun CharSequence.count(predicate: (Char) -> Boolean): Int

Требования к платформе и версии: JVM (1.4)

decapitalize

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

fun String.decapitalize(locale: Locale): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

drop

Возвращает строку с удаленными первыми n символами.

fun String.drop(n: Int): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

dropLast

Возвращает строку с удаленными последними n символами.

fun String.dropLast(n: Int): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

dropLastWhile

Возвращает строку, содержащую все символы, кроме последних символов, которые удовлетворяют заданному предикату .

fun String.dropLastWhile(
    predicate: (Char) -> Boolean
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

dropWhile

Возвращает строку, содержащую все символы, кроме первых символов, которые удовлетворяют заданному предикату .

fun String.dropWhile(predicate: (Char) -> Boolean): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

elementAtOrElse

Возвращает символ по заданному индексу или результат вызова функции defaultValue, если индекс находится за пределами этой последовательности символов.

fun CharSequence.elementAtOrElse(
    index: Int, 
    defaultValue: (Int) -> Char
): Char

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

elementAtOrNull

Возвращает символ по заданному индексу или null , если индекс выходит за пределы этой последовательности символов.

fun CharSequence.elementAtOrNull(index: Int): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

endsWith

Возвращает true если эта последовательность символов заканчивается указанным символом.

fun CharSequence.endsWith(
    char: Char, 
    ignoreCase: Boolean = false
): Boolean

Возвращает true если эта последовательность символов заканчивается указанным суффиксом.

fun CharSequence.endsWith(
    suffix: CharSequence, 
    ignoreCase: Boolean = false
): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

filter

Возвращает строку, содержащую только те символы из исходной строки, которые соответствуют заданному предикату .

fun String.filter(predicate: (Char) -> Boolean): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

filterIndexed

Возвращает строку, содержащую только те символы из исходной строки, которые соответствуют заданному предикату .

fun String.filterIndexed(
    predicate: (indexIntChar) -> Boolean
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

filterIndexedTo

Добавляет все символы, соответствующие заданному предикату, в заданное место назначения .

fun <C : Appendable> CharSequence.filterIndexedTo(
    destination: C, 
    predicate: (indexIntChar) -> Boolean
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

filterNot

Возвращает строку, содержащую только те символы из исходной строки, которые не соответствуют заданному предикату .

fun String.filterNot(predicate: (Char) -> Boolean): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

filterNotTo

Добавляет все символы, не соответствующие заданному предикату, в заданное место назначения .

fun <C : Appendable> CharSequence.filterNotTo(
    destination: C, 
    predicate: (Char) -> Boolean
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

filterTo

Добавляет все символы, соответствующие заданному предикату, в заданное место назначения .

fun <C : Appendable> CharSequence.filterTo(
    destination: C, 
    predicate: (Char) -> Boolean
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

find

Возвращает первый символ, соответствующий данному предикату , или null , если такой символ не был найден.

fun CharSequence.find(predicate: (Char) -> Boolean): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

findAnyOf

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

fun CharSequence.findAnyOf(
    strings: Collection<String>, 
    startIndex: Int = 0, 
    ignoreCase: Boolean = false
): Pair<Int, String>?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

findLast

Возвращает последний символ, соответствующий данному предикату , или null , если такой символ не был найден.

fun CharSequence.findLast(
    predicate: (Char) -> Boolean
): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

findLastAnyOf

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

fun CharSequence.findLastAnyOf(
    strings: Collection<String>, 
    startIndex: Int = lastIndex, 
    ignoreCase: Boolean = false
): Pair<Int, String>?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

first

Возвращает первый символ.

fun CharSequence.first(): Char

Возвращает первый символ, соответствующий заданному предикату .

fun CharSequence.first(predicate: (Char) -> Boolean): Char

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

firstNotNullOf

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

fun <R : Any> CharSequence.firstNotNullOf(
    transform: (Char) -> R?
): R

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

firstNotNullOfOrNull

Возвращает первое ненулевое значение, созданное функцией преобразования , применяемой к символам этой последовательности символов в порядке итерации, или null , если ненулевое значение не было создано.

fun <R : Any> CharSequence.firstNotNullOfOrNull(
    transform: (Char) -> R?
): R?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

firstOrNull

Возвращает первый символ или null , если последовательность символов пуста.

fun CharSequence.firstOrNull(): Char?

Возвращает первый символ, соответствующий заданному предикату , или null , если символ не был найден.

fun CharSequence.firstOrNull(
    predicate: (Char) -> Boolean
): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

flatMap

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

fun <R> CharSequence.flatMap(
    transform: (Char) -> Iterable<R>
): List<R>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

flatMapIndexed

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

fun <R> CharSequence.flatMapIndexed(
    transform: (indexIntChar) -> Iterable<R>
): List<R>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

flatMapIndexedTo

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

fun <R, C : MutableCollection<in R>> CharSequence.flatMapIndexedTo(
    destination: C, 
    transform: (indexIntChar) -> Iterable<R>
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

flatMapTo

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

fun <R, C : MutableCollection<in R>> CharSequence.flatMapTo(
    destination: C, 
    transform: (Char) -> Iterable<R>
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

fold

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

fun <R> CharSequence.fold(
    initial: R, 
    operation: (accRChar) -> R
): R

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

foldIndexed

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

fun <R> CharSequence.foldIndexed(
    initial: R, 
    operation: (indexIntaccRChar) -> R
): R

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

foldRight

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

fun <R> CharSequence.foldRight(
    initial: R, 
    operation: (CharaccR) -> R
): R

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

foldRightIndexed

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

fun <R> CharSequence.foldRightIndexed(
    initial: R, 
    operation: (indexIntCharaccR) -> R
): R

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

forEach

Выполняет заданное действие над каждым персонажем.

fun CharSequence.forEach(action: (Char) -> Unit)

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

forEachIndexed

Выполняет заданное действие над каждым символом, обеспечивая порядковый индекс с символом.

fun CharSequence.forEachIndexed(
    action: (indexIntChar) -> Unit)

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

format

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

fun String.format(vararg args: Any?): String

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

fun String.format(locale: Locale, vararg args: Any?): String

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

fun String.format(locale: Locale?, vararg args: Any?): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

getOrElse

Возвращает символ по заданному индексу или результат вызова функции defaultValue, если индекс находится за пределами этой последовательности символов.

fun CharSequence.getOrElse(
    index: Int, 
    defaultValue: (Int) -> Char
): Char

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

getOrNull

Возвращает символ по заданному индексу или null , если индекс выходит за пределы этой последовательности символов.

fun CharSequence.getOrNull(index: Int): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

groupBy

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

fun <K> CharSequence.groupBy(
    keySelector: (Char) -> K
): Map<K, List<Char>>

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

fun <K, V> CharSequence.groupBy(
    keySelector: (Char) -> K, 
    valueTransform: (Char) -> V
): Map<K, List<V>>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

groupByTo

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

fun <K, M : MutableMap<in K, MutableList<Char>>> CharSequence.groupByTo(
    destination: M, 
    keySelector: (Char) -> K
): M

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

fun <K, V, M : MutableMap<in K, MutableList<V>>> CharSequence.groupByTo(
    destination: M, 
    keySelector: (Char) -> K, 
    valueTransform: (Char) -> V
): M

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)

groupingBy

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

fun <K> CharSequence.groupingBy(
    keySelector: (Char) -> K
): Grouping<Char, K>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

hasSurrogatePairAt

Возвращает true , если эта CharSequence имеет суррогатную пару Unicode по указанному индексу .

fun CharSequence.hasSurrogatePairAt(index: Int): Boolean

Требования к платформе и версии: JVM (1.3), JS (1.3), Native (1.3)

ifBlank

Возвращает эту последовательность символов, если она не пуста и не состоит только из пробельных символов, или результат вызова функции defaultValue в противном случае.

fun <C, R> C.ifBlank(
    defaultValue: () -> R
): R where C : CharSequence, C : R

Требования к платформе и версии: JVM (1.3), JS (1.3), Native (1.3)

ifEmpty

Возвращает эту последовательность символов, если она не пуста, или результат вызова функции defaultValue, если последовательность символов пуста.

fun <C, R> C.ifEmpty(
    defaultValue: () -> R
): R where C : CharSequence, C : R

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

indexOf

Возвращает индекс в этой строке первого вхождения указанного символа, начиная с указанного startIndex .

fun CharSequence.indexOf(
    char: Char, 
    startIndex: Int = 0, 
    ignoreCase: Boolean = false
): Int

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

fun CharSequence.indexOf(
    string: String, 
    startIndex: Int = 0, 
    ignoreCase: Boolean = false
): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

indexOfAny

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

fun CharSequence.indexOfAny(
    chars: CharArray, 
    startIndex: Int = 0, 
    ignoreCase: Boolean = false
): Int

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

fun CharSequence.indexOfAny(
    strings: Collection<String>, 
    startIndex: Int = 0, 
    ignoreCase: Boolean = false
): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

indexOfFirst

Возвращает индекс первого символа, соответствующего данному предикату , или -1, если последовательность символов не содержит такого символа.

fun CharSequence.indexOfFirst(
    predicate: (Char) -> Boolean
): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

indexOfLast

Возвращает индекс последнего символа, соответствующего данному предикату , или -1, если последовательность символов не содержит такого символа.

fun CharSequence.indexOfLast(
    predicate: (Char) -> Boolean
): Int

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

intern

Возвращает каноническое представление для этого строкового объекта.

fun String.intern(): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

isEmpty

Возвращает true если эта последовательность символов пуста (не содержит символов).

fun CharSequence.isEmpty(): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

isNotBlank

Возвращает true если эта последовательность символов не пуста и содержит некоторые символы, кроме символов пробела.

fun CharSequence.isNotBlank(): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

isNotEmpty

Возвращает true если эта последовательность символов не пуста.

fun CharSequence.isNotEmpty(): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

isNullOrBlank

Возвращает true если эта допускающая значение null последовательность символов является либо null либо пустой или состоит только из пробельных символов.

fun CharSequence?.isNullOrBlank(): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

isNullOrEmpty

Возвращает true , если эта последовательность символов, допускающая значение NULL, является либо null либо пустой.

fun CharSequence?.isNullOrEmpty(): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

iterator

Итератор для символов заданной последовательности символов.

operator fun CharSequence.iterator(): CharIterator

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

last

Возвращает последнего персонажа.

fun CharSequence.last(): Char

Возвращает последний символ, соответствующий заданному предикату .

fun CharSequence.last(predicate: (Char) -> Boolean): Char

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

lastIndexOf

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

fun CharSequence.lastIndexOf(
    char: Char, 
    startIndex: Int = lastIndex, 
    ignoreCase: Boolean = false
): Int

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

fun CharSequence.lastIndexOf(
    string: String, 
    startIndex: Int = lastIndex, 
    ignoreCase: Boolean = false
): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

lastIndexOfAny

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

fun CharSequence.lastIndexOfAny(
    chars: CharArray, 
    startIndex: Int = lastIndex, 
    ignoreCase: Boolean = false
): Int

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

fun CharSequence.lastIndexOfAny(
    strings: Collection<String>, 
    startIndex: Int = lastIndex, 
    ignoreCase: Boolean = false
): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

lastOrNull

Возвращает последний символ или null , если последовательность символов пуста.

fun CharSequence.lastOrNull(): Char?

Возвращает последний символ, соответствующий данному предикату , или null , если такой символ не был найден.

fun CharSequence.lastOrNull(
    predicate: (Char) -> Boolean
): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

lines

Разделяет эту последовательность символов на список строк,разделенных любой из следующих последовательностей символов:CRLF,LF или CR.

fun CharSequence.lines(): List<String>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

lineSequence

Разделяет эту символьную последовательность на последовательность строк,разделенную любой из следующих символьных последовательностей:CRLF,LF или CR.

fun CharSequence.lineSequence(): Sequence<String>

Требования к платформе и версии: JVM (1.5)

lowercase

Возвращает копию этой строки, преобразованную в нижний регистр с использованием правил указанной локали .

fun String.lowercase(locale: Locale): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

map

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

fun <R> CharSequence.map(transform: (Char) -> R): List<R>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapIndexed

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

fun <R> CharSequence.mapIndexed(
    transform: (indexIntChar) -> R
): List<R>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapIndexedNotNull

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

fun <R : Any> CharSequence.mapIndexedNotNull(
    transform: (indexIntChar) -> R?
): List<R>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapIndexedNotNullTo

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

fun <R : Any, C : MutableCollection<in R>> CharSequence.mapIndexedNotNullTo(
    destination: C, 
    transform: (indexIntChar) -> R?
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapIndexedTo

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

fun <R, C : MutableCollection<in R>> CharSequence.mapIndexedTo(
    destination: C, 
    transform: (indexIntChar) -> R
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapNotNull

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

fun <R : Any> CharSequence.mapNotNull(
    transform: (Char) -> R?
): List<R>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapNotNullTo

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

fun <R : Any, C : MutableCollection<in R>> CharSequence.mapNotNullTo(
    destination: C, 
    transform: (Char) -> R?
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

mapTo

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

fun <R, C : MutableCollection<in R>> CharSequence.mapTo(
    destination: C, 
    transform: (Char) -> R
): C

Требования к платформе и версии: JS (1.1)

match

fun String.match(regex: String): Array<String>?

matches

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

Возвращает true , если эта последовательность символов соответствует заданному регулярному выражению.

infix fun CharSequence.matches(regex: Regex): Boolean

Требования к платформе и версии: JS (1.1)

fun String.matches(regex: String): Boolean

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxByOrNull

Возвращает первый символ, дающий наибольшее значение данной функции, или null , если символов нет.

fun <R : Comparable<R>> CharSequence.maxByOrNull(
    selector: (Char) -> R
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxOf

Возвращает наибольшее значение среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

fun <R : Comparable<R>> any_iterable<R>.maxOf(
    selector: (Char) -> R
): R

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxOfOrNull

Возвращает наибольшее значение среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов, или null , если символов нет.

fun <R : Comparable<R>> any_iterable<R>.maxOfOrNull(
    selector: (Char) -> R
): R?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxOfWith

Возвращает наибольшее значение в соответствии с предоставленным компаратором среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

fun <R> CharSequence.maxOfWith(
    comparator: Comparator<in R>, 
    selector: (Char) -> R
): R

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxOfWithOrNull

Возвращает наибольшее значение в соответствии с предоставленным компаратором среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов, или null , если символы отсутствуют.

fun <R> CharSequence.maxOfWithOrNull(
    comparator: Comparator<in R>, 
    selector: (Char) -> R
): R?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxOrNull

Возвращает наибольший символ или null если символов нет.

fun CharSequence.maxOrNull(): Char?

maxWith

Требования к платформе и версии: JVM (1.7), JS (1.7), Native (1.7)

Возвращает первый символ, имеющий наибольшее значение в соответствии с предоставленным компаратором .

fun CharSequence.maxWith(
    comparator: Comparator<in Char>
): Char

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

fun CharSequence.maxWith(
    comparator: Comparator<in Char>
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

maxWithOrNull

Возвращает первый символ, имеющий наибольшее значение в соответствии с предоставленным компаратором, или null , если символы отсутствуют.

fun CharSequence.maxWithOrNull(
    comparator: Comparator<in Char>
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minByOrNull

Возвращает первый символ, дающий наименьшее значение данной функции или null , если символов нет.

fun <R : Comparable<R>> CharSequence.minByOrNull(
    selector: (Char) -> R
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minOf

Возвращает наименьшее значение среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

fun <R : Comparable<R>> any_iterable<R>.minOf(
    selector: (Char) -> R
): R

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minOfOrNull

Возвращает наименьшее значение среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов, или null , если символов нет.

fun <R : Comparable<R>> any_iterable<R>.minOfOrNull(
    selector: (Char) -> R
): R?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minOfWith

Возвращает наименьшее значение в соответствии с предоставленным компаратором среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

fun <R> CharSequence.minOfWith(
    comparator: Comparator<in R>, 
    selector: (Char) -> R
): R

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minOfWithOrNull

Возвращает наименьшее значение в соответствии с предоставленным компаратором среди всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов, или null , если символы отсутствуют.

fun <R> CharSequence.minOfWithOrNull(
    comparator: Comparator<in R>, 
    selector: (Char) -> R
): R?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minOrNull

Возвращает наименьший символ или null , если символов нет.

fun CharSequence.minOrNull(): Char?

minWith

Требования к платформе и версии: JVM (1.7), JS (1.7), Native (1.7)

Возвращает первый символ, имеющий наименьшее значение в соответствии с предоставленным компаратором .

fun CharSequence.minWith(
    comparator: Comparator<in Char>
): Char

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

fun CharSequence.minWith(
    comparator: Comparator<in Char>
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

minWithOrNull

Возвращает первый символ, имеющий наименьшее значение в соответствии с предоставленным компаратором, или null , если символы отсутствуют.

fun CharSequence.minWithOrNull(
    comparator: Comparator<in Char>
): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

none

Возвращает true если последовательность символов не имеет символов.

fun CharSequence.none(): Boolean

Возвращает true если ни один символ не соответствует данному предикату .

fun CharSequence.none(predicate: (Char) -> Boolean): Boolean

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

offsetByCodePoints

Возвращает индекс в этой строке, который смещен от данного индекса на кодовые точки codePointOffset .

fun String.offsetByCodePoints(
    index: Int, 
    codePointOffset: Int
): Int

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)

onEach

Выполняет заданное действие с каждым символом и впоследствии возвращает саму последовательность символов.

fun <S : CharSequence> S.onEach(action: (Char) -> Unit): S

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

onEachIndexed

Выполняет заданное действие над каждым символом, предоставляя последовательный индекс с символом, а затем возвращает саму последовательность символов.

fun <S : CharSequence> S.onEachIndexed(
    action: (indexIntChar) -> Unit
): S

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

orEmpty

Возвращает строку, если она не равна null , или пустую строку в противном случае.

fun String?.orEmpty(): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

padEnd

Дополняет строку до указанной длины в конце указанным символом или пробелом.

fun String.padEnd(length: Int, padChar: Char = ' '): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

padStart

Дополняет строку до указанной длины в начале указанным символом или пробелом.

fun String.padStart(length: Int, padChar: Char = ' '): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

partition

Разбивает исходную строку на пару строк, где первая строка содержит символы, для которых предикат дал значение true , а вторая строка содержит символы, для которых предикат дал значение false .

fun String.partition(
    predicate: (Char) -> Boolean
): Pair<String, String>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

prependIndent

Добавляет отступ к каждой строке исходной строки.

fun String.prependIndent(indent: String = "    "): String

Требования к платформе и версии: JVM (1.3), JS (1.3), Native (1.3)

random

Возвращает случайный символ из этой последовательности символов.

fun CharSequence.random(): Char

Возвращает случайный символ из этой последовательности символов,используя указанный источник случайности.

fun CharSequence.random(random: Random): Char

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

randomOrNull

Возвращает случайный символ из этой последовательности символов или null , если эта последовательность символов пуста.

fun CharSequence.randomOrNull(): Char?

Возвращает случайный символ из этой последовательности символов, используя указанный источник случайности, или null , если эта последовательность символов пуста.

fun CharSequence.randomOrNull(random: Random): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

rangeTo

Создает диапазон от этого Сопоставимых значений до заданного этого значения.

operator fun <T : Comparable<T>> T.rangeTo(
    that: T
): ClosedRange<T>

Требования к платформе и версии: JVM (1.7), JS (1.7), Native (1.7)

rangeUntil

Создает открытый диапазон от этого сопоставимого значения до указанного этого значения.

operator fun <T : Comparable<T>> T.rangeUntil(
    that: T
): OpenEndRange<T>

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

reader

Создает новый читатель для строки.

fun String.reader(): StringReader

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

reduce

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

fun CharSequence.reduce(
    operation: (accCharChar) -> Char
): Char

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

reduceIndexed

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

fun CharSequence.reduceIndexed(
    operation: (indexIntaccCharChar) -> Char
): Char

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

reduceIndexedOrNull

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

fun CharSequence.reduceIndexedOrNull(
    operation: (indexIntaccCharChar) -> Char
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

reduceOrNull

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

fun CharSequence.reduceOrNull(
    operation: (accCharChar) -> Char
): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

reduceRight

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

fun CharSequence.reduceRight(
    operation: (CharaccChar) -> Char
): Char

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

reduceRightIndexed

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

fun CharSequence.reduceRightIndexed(
    operation: (indexIntCharaccChar) -> Char
): Char

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

reduceRightIndexedOrNull

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

fun CharSequence.reduceRightIndexedOrNull(
    operation: (indexIntCharaccChar) -> Char
): Char?

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

reduceRightOrNull

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

fun CharSequence.reduceRightOrNull(
    operation: (CharaccChar) -> Char
): Char?

Требования к платформе и версии: Собственная (1.3)

refTo

fun String.refTo(index: Int): CValuesRef<COpaque>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

removePrefix

Если эта строка начинается с данного префикса , возвращает копию этой строки с удаленным префиксом. В противном случае возвращает эту строку.

fun String.removePrefix(prefix: CharSequence): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

removeRange

Удаляет часть строки в заданном диапазоне.

fun String.removeRange(
    startIndex: Int, 
    endIndex: Int
): String

Удаляет часть строки в заданном диапазоне .

fun String.removeRange(range: IntRange): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

removeSuffix

Если эта строка заканчивается заданным суффиксом , возвращает копию этой строки с удаленным суффиксом. В противном случае возвращает эту строку.

fun String.removeSuffix(suffix: CharSequence): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

removeSurrounding

Удаляет из строки заданный префикс и суффикс тогда и только тогда, когда она начинается с префикса и заканчивается суффиксом . В противном случае возвращает эту строку без изменений.

fun String.removeSurrounding(
    prefix: CharSequence, 
    suffix: CharSequence
): String

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

fun String.removeSurrounding(delimiter: CharSequence): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replace

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

fun CharSequence.replace(
    regex: Regex, 
    replacement: String
): String

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

fun CharSequence.replace(
    regex: Regex, 
    transform: (MatchResult) -> CharSequence
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceAfter

Заменить часть строки после первого появления данного разделителя на заменяющую строку. Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.replaceAfter(
    delimiter: Char, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

fun String.replaceAfter(
    delimiter: String, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceAfterLast

Заменить часть строки после последнего появления данного разделителя на заменяющую строку. Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.replaceAfterLast(
    delimiter: String, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

fun String.replaceAfterLast(
    delimiter: Char, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceBefore

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

fun String.replaceBefore(
    delimiter: Char, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

fun String.replaceBefore(
    delimiter: String, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceBeforeLast

Заменить часть строки перед последним вхождением данного разделителя на заменяющую строку. Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.replaceBeforeLast(
    delimiter: Char, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

fun String.replaceBeforeLast(
    delimiter: String, 
    replacement: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceFirst

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

fun CharSequence.replaceFirst(
    regex: Regex, 
    replacement: String
): String

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

replaceFirstChar

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

fun String.replaceFirstChar(
    transform: (Char) -> Char
): String

fun String.replaceFirstChar(
    transform: (Char) -> CharSequence
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceIndent

Обнаруживает общий минимальный отступ, как это делает trimIndent, и заменяет его указанным newIndent .

fun String.replaceIndent(newIndent: String = ""): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

replaceRange

Заменяет часть строки в заданном диапазоне на заменяющую последовательность символов.

fun String.replaceRange(
    startIndex: Int, 
    endIndex: Int, 
    replacement: CharSequence
): String

Замените часть строки в заданном диапазоне на заменяющую строку.

fun String.replaceRange(
    range: IntRange, 
    replacement: CharSequence
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

reversed

Возвращает строку с символами в обратном порядке.

fun String.reversed(): String

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

runningFold

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

fun <R> CharSequence.runningFold(
    initial: R, 
    operation: (accRChar) -> R
): List<R>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

runningFoldIndexed

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

fun <R> CharSequence.runningFoldIndexed(
    initial: R, 
    operation: (indexIntaccRChar) -> R
): List<R>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

runningReduce

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

fun CharSequence.runningReduce(
    operation: (accCharChar) -> Char
): List<Char>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

runningReduceIndexed

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

fun CharSequence.runningReduceIndexed(
    operation: (indexIntaccCharChar) -> Char
): List<Char>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

scan

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

fun <R> CharSequence.scan(
    initial: R, 
    operation: (accRChar) -> R
): List<R>

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

scanIndexed

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

fun <R> CharSequence.scanIndexed(
    initial: R, 
    operation: (indexIntaccRChar) -> R
): List<R>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

single

Возвращает одиночный символ или бросает исключение,если последовательность символов символов символов символов пуста или имеет несколько символов.

fun CharSequence.single(): Char

Возвращает единственный символ, соответствующий заданному предикату , или выдает исключение, если совпадающих символов нет или больше одного.

fun CharSequence.single(predicate: (Char) -> Boolean): Char

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

singleOrNull

Возвращает один символ или null , если последовательность символов пуста или содержит более одного символа.

fun CharSequence.singleOrNull(): Char?

Возвращает единственный символ, соответствующий данному предикату , или null , если символ не был найден или было найдено более одного символа.

fun CharSequence.singleOrNull(
    predicate: (Char) -> Boolean
): Char?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

slice

Возвращает строку, содержащую символы исходной строки в указанном диапазоне индексов .

fun String.slice(indices: IntRange): String

Возвращает строку, содержащую символы исходной строки по указанным индексам .

fun String.slice(indices: Iterable<Int>): String

split

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

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

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

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

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

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

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

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

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

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

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

splitToSequence

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

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

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

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

fun CharSequence.splitToSequence(
    regex: Regex, 
    limit: Int = 0
): Sequence<String>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

startsWith

Возвращает true если эта последовательность символов начинается с указанного символа.

fun CharSequence.startsWith(
    char: Char, 
    ignoreCase: Boolean = false
): Boolean

Возвращает true если эта последовательность символов начинается с указанного префикса.

fun CharSequence.startsWith(
    prefix: CharSequence, 
    ignoreCase: Boolean = false
): Boolean

Возвращает true если подстрока этой последовательности символов, начинающаяся с указанного смещения startIndex, начинается с указанного префикса.

fun CharSequence.startsWith(
    prefix: CharSequence, 
    startIndex: Int, 
    ignoreCase: Boolean = false
): Boolean

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

subSequence

Возвращает подпоследовательность этой последовательности графиков.

fun String.subSequence(start: Int, end: Int): CharSequence

Возвращает подпоследовательность этой последовательности символов, заданную заданным диапазоном индексов.

fun CharSequence.subSequence(range: IntRange): CharSequence

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

substring

Возвращает подстроку, указанную в указанном диапазоне индексов.

fun String.substring(range: IntRange): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

substringAfter

Возвращает подстроку после первого вхождения разделителя . Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.substringAfter(
    delimiter: Char, 
    missingDelimiterValue: String = this
): String

fun String.substringAfter(
    delimiter: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

substringAfterLast

Возвращает подстроку после последнего вхождения разделителя . Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.substringAfterLast(
    delimiter: Char, 
    missingDelimiterValue: String = this
): String

fun String.substringAfterLast(
    delimiter: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

substringBefore

Возвращает подстроку перед первым вхождением разделителя . Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.substringBefore(
    delimiter: Char, 
    missingDelimiterValue: String = this
): String

fun String.substringBefore(
    delimiter: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

substringBeforeLast

Возвращает подстроку перед последним вхождением разделителя . Если строка не содержит разделителя, возвращается значение missingDelimiterValue, которое по умолчанию соответствует исходной строке.

fun String.substringBeforeLast(
    delimiter: Char, 
    missingDelimiterValue: String = this
): String

fun String.substringBeforeLast(
    delimiter: String, 
    missingDelimiterValue: String = this
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

sumBy

Возвращает сумму всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

fun CharSequence.sumBy(selector: (Char) -> Int): Int

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

sumByDouble

Возвращает сумму всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

fun CharSequence.sumByDouble(
    selector: (Char) -> Double
): Double

sumOf

Возвращает сумму всех значений, созданных функцией селектора, примененной к каждому символу в последовательности символов.

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

fun CharSequence.sumOf(selector: (Char) -> Double): Double

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

fun CharSequence.sumOf(selector: (Char) -> Int): Int

Требования к платформе и версии: JVM (1.4), JS (1.4), Native (1.4)

fun CharSequence.sumOf(selector: (Char) -> Long): Long

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

fun CharSequence.sumOf(selector: (Char) -> UInt): UInt

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

fun CharSequence.sumOf(selector: (Char) -> ULong): ULong

Требования к платформе и версии: JVM (1.4)

fun CharSequence.sumOf(
    selector: (Char) -> BigDecimal
): BigDecimal

Требования к платформе и версии: JVM (1.4)

fun CharSequence.sumOf(
    selector: (Char) -> BigInteger
): BigInteger

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

take

Возвращает строку, содержащую первые n символов из этой строки, или всю строку, если эта строка короче.

fun String.take(n: Int): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

takeLast

Возвращает строку, содержащую последние n символов из этой строки, или всю строку, если эта строка короче.

fun String.takeLast(n: Int): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

takeLastWhile

Возвращает строку, содержащую последние символы, удовлетворяющие заданному предикату .

fun String.takeLastWhile(
    predicate: (Char) -> Boolean
): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

takeWhile

Возвращает строку, содержащую первые символы, удовлетворяющие заданному предикату .

fun String.takeWhile(predicate: (Char) -> Boolean): String

Требования к платформе и версии: JVM (1.2)

toBigDecimal

Анализирует строку как число java.math.BigDecimal и возвращает результат.

fun String.toBigDecimal(): BigDecimal

fun String.toBigDecimal(mathContext: MathContext): BigDecimal

Требования к платформе и версии: JVM (1.2)

toBigDecimalOrNull

Анализирует строку как java.math.BigDecimal числа и возвращает результат или null , если строка не является правильным представлением числа.

fun String.toBigDecimalOrNull(): BigDecimal?

fun String.toBigDecimalOrNull(
    mathContext: MathContext
): BigDecimal?

Требования к платформе и версии: JVM (1.2)

toBigInteger

Анализирует строку как число java.math.BigInteger и возвращает результат.

fun String.toBigInteger(): BigInteger

fun String.toBigInteger(radix: Int): BigInteger

Требования к платформе и версии: JVM (1.2)

toBigIntegerOrNull

Анализирует строку как java.math.BigInteger числа и возвращает результат или null , если строка не является правильным представлением числа.

fun String.toBigIntegerOrNull(): BigInteger?

fun String.toBigIntegerOrNull(radix: Int): BigInteger?

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toBooleanStrict

Возвращает true если содержимое этой строки равно слову «истина», false если оно равно «ложь», и вызывает исключение в противном случае.

fun String.toBooleanStrict(): Boolean

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toBooleanStrictOrNull

Возвращает true , если содержимое этой строки равно слову «true», false , если оно равно «false», и null в противном случае.

fun String.toBooleanStrictOrNull(): Boolean?

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

toByteArray

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

fun String.toByteArray(
    charset: Charset = Charsets.UTF_8
): ByteArray

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)

toByteOrNull

Анализирует строку как число байта со знаком и возвращает результат или null если строка не является допустимым представлением числа.

fun String.toByteOrNull(): Byte?

fun String.toByteOrNull(radix: Int): Byte?

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

toCharArray

Копирует символы из этой строки в целевой массив символов и возвращает этот массив.

fun String.toCharArray(
    destination: CharArray, 
    destinationOffset: Int = 0, 
    startIndex: Int = 0, 
    endIndex: Int = length
): CharArray

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

toCollection

Добавляет все символы в данной целевой коллекции.

fun <C : MutableCollection<in Char>> CharSequence.toCollection(
    destination: C
): C

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

toHashSet

Возвращает новый HashSet всех символов.

fun CharSequence.toHashSet(): HashSet<Char>

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)

toIntOrNull

Анализирует строку как число Int и возвращает результат или null если строка не является допустимым представлением числа.

fun String.toIntOrNull(): Int?

fun String.toIntOrNull(radix: Int): Int?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

toList

Возвращает список, содержащий все символы.

fun CharSequence.toList(): List<Char>

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)

toLongOrNull

Анализирует строку как длинное число и возвращает результат или null если строка не является допустимым представлением числа.

fun String.toLongOrNull(): Long?

fun String.toLongOrNull(radix: Int): Long?

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

toLowerCase

Возвращает копию этой строки,преобразованную в нижний регистр по правилам указанной локали.

fun String.toLowerCase(locale: Locale): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

toMutableList

Возвращает новый MutableList, заполненный всеми символами этой последовательности символов.

fun CharSequence.toMutableList(): MutableList<Char>

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

toPattern

Преобразует строку в регулярное выражение Pattern ( необязательно) с указанными флагами из Pattern или вместе, чтобы строки можно было разделить или сопоставить.

fun String.toPattern(flags: Int = 0): Pattern

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

toRegex

Преобразует строку в регулярное выражение Regex с параметрами по умолчанию.

fun String.toRegex(): Regex

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

fun String.toRegex(option: RegexOption): Regex

Преобразует строку в регулярное выражение Regex с указанным набором параметров .

fun String.toRegex(options: Set<RegexOption>): Regex

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

toSet

Возвращает набор всех символов.

fun CharSequence.toSet(): Set<Char>

Требования к платформе и версии: JVM (1.1), JS (1.1), Native (1.1)

toShortOrNull

Анализирует строку как короткое число и возвращает результат или null если строка не является допустимым представлением числа.

fun String.toShortOrNull(): Short?

fun String.toShortOrNull(radix: Int): Short?

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

toSortedSet

Возвращает новый SortedSet всех символов.

fun CharSequence.toSortedSet(): SortedSet<Char>

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toUByte

Анализирует строку как подписанное число UByte и возвращает результат.

fun String.toUByte(): UByte

fun String.toUByte(radix: Int): UByte

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toUByteOrNull

Анализирует строку как UBYTE числа и возвращает результат или null , если строка не является правильным представлением числа.

fun String.toUByteOrNull(): UByte?

fun String.toUByteOrNull(radix: Int): UByte?

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toUInt

Анализирует строку как число UInt и возвращает результат.

fun String.toUInt(): UInt

fun String.toUInt(radix: Int): UInt

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toUIntOrNull

Анализирует строку как UInt числа и возвращает результат или null , если строка не является правильным представлением числа.

fun String.toUIntOrNull(): UInt?

fun String.toUIntOrNull(radix: Int): UInt?

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toULong

Анализирует строку как число ULong и возвращает результат.

fun String.toULong(): ULong

fun String.toULong(radix: Int): ULong

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toULongOrNull

Анализирует строку как ULong числа и возвращает результат или null , если строка не является правильным представлением числа.

fun String.toULongOrNull(): ULong?

fun String.toULongOrNull(radix: Int): ULong?

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

toUpperCase

Возвращает копию этой строки,преобразованную в верхний регистр по правилам указанной локали.

fun String.toUpperCase(locale: Locale): String

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toUShort

Анализирует строку как номер UShort и возвращает результат.

fun String.toUShort(): UShort

fun String.toUShort(radix: Int): UShort

Требования к платформе и версии: JVM (1.5), JS (1.5), Native (1.5)

toUShortOrNull

Анализирует строку как UShort числа и возвращает результат или null , если строка не является правильным представлением числа.

fun String.toUShortOrNull(): UShort?

fun String.toUShortOrNull(radix: Int): UShort?

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

trim

Возвращает строку с начальными и конечными символами, соответствующими удаленному предикату .

fun String.trim(predicate: (Char) -> Boolean): String

Возвращает строку с удаленными начальными и конечными символами из массива chars .

fun String.trim(vararg chars: Char): String

Возвращает строку с удалением лидирующего и скользящего пробела.

fun String.trim(): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

trimEnd

Возвращает строку с завершающими символами, соответствующими удаленному предикату .

fun String.trimEnd(predicate: (Char) -> Boolean): String

Возвращает строку с удаленными завершающими символами из массива chars .

fun String.trimEnd(vararg chars: Char): String

Возвращает строку с удаленными пробелами.

fun String.trimEnd(): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

trimIndent

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

fun String.trimIndent(): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

trimMargin

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

fun String.trimMargin(marginPrefix: String = "|"): String

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

trimStart

Возвращает строку с начальными символами, соответствующими удаленному предикату .

fun String.trimStart(predicate: (Char) -> Boolean): String

Возвращает строку с удаленными ведущими символами из массива chars .

fun String.trimStart(vararg chars: Char): String

Возвращает строку с удалением лидирующего пробела.

fun String.trimStart(): String

Требования к платформе и версии: JVM (1.5)

uppercase

Возвращает копию этой строки, преобразованную в верхний регистр с использованием правил указанной локали .

fun String.uppercase(locale: Locale): String

Требования к платформе и версии: JVM (1.2), JS (1.2), Native (1.2)

windowed

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

fun CharSequence.windowed(
    size: Int, 
    step: Int = 1, 
    partialWindows: Boolean = false
): List<String>

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

fun <R> CharSequence.windowed(
    size: Int, 
    step: Int = 1, 
    partialWindows: Boolean = false, 
    transform: (CharSequence) -> R
): List<R>

Требования к платформе и версии: JVM (1.2), JS (1.2), Native (1.2)

windowedSequence

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

fun CharSequence.windowedSequence(
    size: Int, 
    step: Int = 1, 
    partialWindows: Boolean = false
): Sequence<String>

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

fun <R> CharSequence.windowedSequence(
    size: Int, 
    step: Int = 1, 
    partialWindows: Boolean = false, 
    transform: (CharSequence) -> R
): Sequence<R>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

withIndex

Возвращает ленивый Iterable, который оборачивает каждый символ исходной последовательности символов в IndexedValue, содержащее индекс этого символа и сам символ.

fun CharSequence.withIndex(): Iterable<IndexedValue<Char>>

Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)

zip

Возвращает список пар, составленных из символов this и других последовательностей символов с тем же индексом. Возвращенный список имеет длину самой короткой последовательности символов.

infix fun CharSequence.zip(
    other: CharSequence
): List<Pair<CharChar>>

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

fun <V> CharSequence.zip(
    other: CharSequence, 
    transform: (aCharbChar) -> V
): List<V>

Требования к платформе и версии: JVM (1.2), JS (1.2), Native (1.2)

zipWithNext

Возвращает список пар каждых двух соседних символов в этой последовательности графиков.

fun CharSequence.zipWithNext(): List<Pair<CharChar>>

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

fun <R> CharSequence.zipWithNext(
    transform: (aCharbChar) -> R
): List<R>

Строки

Пробежаться по строке
Конвертируем строку в число
Дополняем строку символами
replace()/replaceRange()
Конвертируем строку в дату
StringBuilder

Со строками в Kotlin работать стало проще.

Поздороваемся с котом по имени Барсик.


val catName: String = "Барсик"
println("Привет $catName! Как дела?")

Обратите внимание, что мы добавили знак доллара к имени переменной и используем её прямо в строке. В Java нам пришлось бы разбивать строку и соединять её с помощью конкатенации.


// Java
println("Привет " + catName + "! Как дела?");

Кстати, такой код тоже будет работать, но первый способ гораздо удобнее.

Мы понимаем, что речь идёт о строке, поэтому можно было написать код без указания типа.


val catName = "Барсик"

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


println("Привет $catName! Как дела?")
// выводится: Привет $catName! Как дела?

Мы использовали так называемый “строковый шаблон”. За кулисами происходит соединение при помощи StringBuilder, но более удобным и быстрым способом.

Длину строки можно вычислить через функцию count().


val murzik = "Мурзик"
println(murzik.count())

Функции-расширения

Разработчики JetBrains добавили множество готовых функций-расширений для многих классов, в том числе и для строк. Найти их можно в файле String.kt (в студии дважды нажмите клавишу Shift и в поисковой строке наберите имя данного файла для просмотра исходника).

Некоторые примеры функций-расширений представлены ниже. На самом деле их больше, изучайте самостоятельно.

Пробежаться по строке

Строку можно рассматривать как массив символов.


val cat = "Барсик"
val character = cat[2]
println(character) // выводит р

Пробежаться по всей строке без использования индекса.


val cat = "Барсик"

for(char in cat){
    println(char)
}

Пробежаться по всей строки с использованием индекса.


val cat = "Барсик"

for (char in cat.indices){
    print(cat[char] + "n")
}

Саму строку можно предварительно явно перевести в массив символов.


for(char in cat.toCharArray()){
    println(char)
}

Можно вызывать forEach.


cat.forEach { char -> println(char) }

Если вам нужен не только символ строки, но и его индекс, то вызываем forEachIndexed.


cat.forEachIndexed{index, char -> println("Index $index Character $char")}

// Результат
Index 0 Character Б
Index 1 Character а
Index 2 Character р
Index 3 Character с
Index 4 Character и
Index 5 Character к

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


val cat = "Барсик"
val index = 5
println("Character at index $index in $cat is ${cat[index]}")

Если вы укажете несуществующий индекс, то получите исключение StringIndexOutOfBoundsException, поэтому делайте проверку.

Рассмотрим пример с числами. Допустим нужно произвести арифметические действия с целыми числами и вывести результат в строке.


val a: Int = 9
val b: Int = 1

fun main(args: Array<String>) {
    println("Осталось жизней: ${a - b}")
}

Снова используем знак доллара, а действия с числами поместили в фигурные скобки. Kotlin сама разберётся с типами данных и сделает всю работу.

Выведем второй элемент массива.


fun main(args: Array<String>) {
    val names = arrayListOf("Мурзик")
    names.add("Васька")
    names.add("Барсик")
    
    println("Кота зовут ${names[0]}")
}

Опять используем знак доллара и фигурные скобки.

Можно даже использовать условие.


val count = 9
print("value of count is ${if (count == 10) "equal to 10" else "not equal to 10"}")

Многострочный текст можно создать, используя тройные кавычки. Больше нам не нужны символы перевода строки n, а также символы типа t, b, r и т.д.


val multipleStringLines = """
    У лукоморья дуб зелёный;
    Златая цепь на дубе том:
    И днём и ночью кот учёный
    Всё ходит по цепи кругом;
    Идёт направо - песнь заводит,
    Налево - сказку говорит. """

Метод trimMargin() позволяет убрать “пустые” символы из текста по разделителю | (по умолчанию):


val myString = """This is the first line
|This is the second line
    |This is the third line
        |And fourth line
"""
println(myString.trimMargin())

На выходе получим.


This is the first line
This is the second line
This is the third line
And fourth line

Можно задать свой собственный разделитель и указать его в методе.


trimMargin(">")

Если первая и последняя строки длинного предложения пустые, то они будут удалены и строки.

Можем делать со строкой знакомые операции в удобной обёртке.


val cat = "Барсик"
println(cat.reversed()) // кисраБ
println(cat.takeLast(2)) // ик

val kitty = "[email protected]"
println(kitty.substringBefore("@")) // murzik

Конвертируем строку в число

Сконвертировать строку в число можно через соответствующие методы.


val str = "123"
print(str.toLong())

Если нужно обработать ситуацию с null, то используйте другой метод.


val str = "123.4"
println(str.toLongOrNull()) // вернёт null

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


val str = "11111111"
print(str.toLongOrNull(2)) //255

val str = "105"
print(str.toLongOrNull(8)) //69

Также есть схожие методы toShort(), toShortOrNull(), toInt(), toIntOrNull(), toFloat(), toDouble() и т.д. Часть из них поддерживает перегруженные версии с другой системой счисления, но проверяйте поддерживаемые системы.

Не совсем про числа, но можно сконвертировать в булево значение.


val str = "false"
println(str.toBoolean())

Дополняем строку символами

Можно дополнить строку символами с самого начала или в конце.


val name = "Barsik"
val pad = name.padStart(10, '#')
println(pad) // ####Barsik

val name = "Barsik"
val pad = name.padEnd(10, '*')
println(pad) // Barsik****

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

Подстроки


// подстрока с указанного индекса
val result = "developer.alexanderklimov.ru".substring(10) // alexanderklimov.ru

// подстрока до первого указанного разделителя
val first = "developer.alexanderklimov.ru".substringBefore('.') // developer

// подстрока после первого указанного разделителя
val last = "developer.alexanderklimov.ru".substringAfter('.') // alexanderklimov.ru

// подстрока после последнего указанного разделителя
val last = "developer.alexanderklimov.ru".substringAfterLast('.') // ru

// подстрока до последнего указанного разделителя
val beforeLast = "developer.alexanderklimov.ru".substringBeforeLast('.') // developer.alexanderklimov

Ещё пример для получения адреса сайта без http://.


val superSite = "http://developer.alexanderklimov.ru"
val index = superSite.lastIndexOf('/')
println("Индекс нужного нам символа: $index")

println(superSite.substring(index + 1)) // developer.alexanderklimov.ru

// другой вариант
println(superSite.substringAfterLast("/"))

Встроенные функции

Kotlin содержит множество встроенных удобных функций для работы со строками. Часть из них уже использовалась в примерах выше. Упомянем ещё несколько полезных функций.


val blank = "   ".isBlank() // true, если пустая строка или пустые символы пробела, табуляции и т.п.

// индекс последнего символа
val lastIndex = "Кот Мурзик".lastIndex // 9

// переводим в верхний регистр первый символ строки
// decapitalize() выполняем обратную задачу
val capitalize = "кот Мурзик".capitalize()

val withSpaces = "1".padStart(2) // добавляем пробел перед строкой
val endZeros = "1".padEnd(3, '0') // "100"  добавляем нули в конец

val dropStart = "Kotlin".drop(2) // "tlin" убираем первые символы в указанном количестве
val dropEnd = "Kotlin".dropLast(3) // "Kot" убираем последние символы в указанном количестве

// возвращаем строку без первого символа, который удовлетворяет условию
val string = "Мурзик"
val result = string.dropWhile{
    it == 'М'
}
textView.text = result // урзик

// возвращаем строку без последнего символа, который удовлетворяет условию
val string = "Мурзик"
val result = string.dropLastWhile{
    it == 'к'
}
textView.text = result // Мурзи

// разбиваем на массив строк
"AnBnC".lines() // [A, B, C]
"ABCD".zipWithNext() // [(A, B), (B, C), (C, D)]

// удаляем символы из заданного диапазона
val string = "Кот, который гулял сам по себе"
val result = string.removeRange(
    3..28 // range
)

// Функции removeXXX() хороши для строк в виде ##Cat##, чтобы убрать лишние символы

// удаляем префикс из строки
val string = "Кот, который гулял сам по себе"
val result = string.removePrefix("Кот")

// удаляем суффикс из строки
val string = "Кот, который гулял сам по себе"
val result = string.removeSuffix("себе")

// удаляем заданный разделитель, который должен окружать строку с начала и с конца
val string = "та, тра-та-та, мы везём с собой кота"

val result = string.removeSurrounding(
    "та" // delimiter
)

textView.text = result // , тра-та-та, мы везём с собой ко

// Также можно указать разные начало и конец, которые окружают строку
val string = "Тра-та-та, тра-та-та, мы везём с собой кота"

val result = string.removeSurrounding(
    "Тра-", // prefix
    " кота" // suffix
)

textView.text = result // та-та, тра-та-та, мы везём с собой


// Добавляем отступы при явном переводе на новую строку
val string = "Какой-то длинный текст, nсостоящий из имён котов: " +
        "nВаська" +
        "nБарсик" +
        "nРыжик"

val result = string.prependIndent(
    "     " // indent
)

// Разбиваем символы на две группы. 
// В первую группу попадут символы в верхнем регистре, во вторую - символы в нижнем регистре
val string = "Кот Васька и кот Мурзик - Друзья!"

val result: Pair<String, String> = string.partition {
    it.isUpperCase()
}

textView.text = result.first + ":" + result.second //КВМД:от аська и кот урзик - рузья!

// Разбиваем строку на список строк. В качестве разделителя - перевод на новую строку
val string = "Кот ВаськаnКотМурзикnКот Мурзик"

// Split string into lines (CRLF, LF or CR)
val lines: List<String> = string.lines()

textView.text = "Кол-во строк: ${lines.size}"
lines.forEach {
    textView.append("n" + it)
}

// Разбиваем строку на список строк с указанным числом символов. В последней строке может выводиться остаток
val string = "Тра-та-та, тра-та-та, мы везём с собой кота"
val list:List<String> = string.chunked(11)
list.forEach {
    textView.append("$itn")
}

/*
Тра-та-та, 
тра-та-та, 
мы везём с 
собой кота
*/

// Содержит ли строка только цифры (используем предикат)
val string = "09032020"

// Returns true if all characters match the given predicate.
val result: Boolean = string.all{
    it.isDigit()
}
textView.append("Is the string $string contain only digit? $result")

// Содержит ли строка хотя бы одну цифру (используем предикат)
val string = "3 кота"
// Returns true if at least one character matches the given predicate.
val result: Boolean = string.any() {
    it.isDigit()
}
textView.append("Is the text "$string" contain any digit? $result")

// Сравниваем две строки с учётом регистра
val string1 = "This is a sample string."
val string2 = "This is a SAMPLE string."

if (string1.compareTo(string2, ignoreCase = true) == 0) {
    textView.append("nnBoth strings are equal, ignoring case.")
} else {
    textView.append("nnBoth strings are not equal, ignoring case.")
}

Можно фильтровать данные с помощью filter(). Допустим, мы хотим извлечь только цифры из строки.


val string = "9 жизней (2016) - Nine Lives - информация о фильме"
val filteredText = string.filter { it.isDigit() }
textView.text = filteredText // 92016

Если хочется решить обратную задачу и получить только символы, но не цифры – то достаточно вызвать filterNot().


val filteredText = string.filterNot { it.isDigit() }

replace()/replaceRange()

Для замены отдельных символов или строк используется функция replace(). Заменим отдельные символы в строке.


val string = "Кит Кишка"

val result = string.replace(
    'и', // old char
    'о', // new char
    true // ignore case Boolean = false
)

textView.text = result // Кот Кошка

Можно менять подстроки.


val result = string.replace(
    "Собака", // old value
    "Кот", // new value
    true // ignore case
)

textView.text = result // Кот - друг человека

Вариант replace() с регулярным выражением. Создадим функцию перевода строки на “драконий” язык. В результате будет создана новая строка с нужными символами.


private fun toDragonSpeak(phrase: String) =
        phrase.replace(Regex("[aeiou]")) {
            when (it.value) {
                "a" -> "4"
                "e" -> "3"
                "i" -> "1"
                "o" -> "0"
                "u" -> "|_|"
                else -> it.value
            }
        }
		
println(toDragonSpeak("Kitten")) // K1tt3n

Можно заменять подстроки через replaceRange(), указывая нужный диапазон. Существуют две версии этого способа.


val string = "Тра-та-та, тра-та-та, мы везём с собой ежа"

// The end index of the range is included
// in the part to be replaced.
val result = string.replaceRange(
    39..40, // range
    "кот" // replacement
)

textView.append(result)

val result2 = string.replaceRange(
    39, // start index
    41, // end index
    "кот" // replacement
)

textView.append("n")
textView.append(result2)

Конвертируем строку в дату


import java.time.LocalDate

var parsedDate = LocalDate.parse("2020-07-27")
println(parsedDate)

Есть также вариант с использованием DateTimeFormatter.


import java.time.LocalDate
import java.time.format.DateTimeFormatter

var parsedDate = LocalDate.parse("Wednesday, July 27, 2020", DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy"))
println("Wednesday, July 27, 2020 : " + parsedDate)

parsedDate = LocalDate.parse("July 27, 2020", DateTimeFormatter.ofPattern("MMMM dd, yyyy"))
println("July 27, 2020 : " + parsedDate)

parsedDate = LocalDate.parse("14/02/2020", DateTimeFormatter.ofPattern("dd/MM/yyyy"))
println("14/02/2020 : "+parsedDate)

parsedDate = LocalDate.parse("27 July,2019", DateTimeFormatter.ofPattern("dd MMMM,yyyy"))
println("27 July,2019 : " + parsedDate)

parsedDate = LocalDate.parse("11th April,2012", DateTimeFormatter.ofPattern("dd'th' MMMM,yyyy"))
println("11th April,2012 : " + parsedDate)

parsedDate = LocalDate.parse("27 Feb, 2001", DateTimeFormatter.ofPattern("dd MMM, yyyy"))
println("27 Feb, 2001 : " + parsedDate)

StringBuilder

У класса StringBuilder в Kotlin есть отдельная функция buildString(), которая поможет сократить количество кода для получения строки.


fun printAlphabet() = buildString {
    for (letter in 'A'..'Z')
        append(letter)
}

Дополнительные материалы

Упражнения для строк

Реклама

The Kotlin String class has an indexOf() method that allows developers to the position of a character or set of characters within a string. Such an operation is especially useful in situations where you may need to break a string into a substring or divide a string into different parts. Let’s go over the indexOf() method with a few examples.

indexOf

indexOf(Char)

The indexOf(Char) method is used to search for a single character within a string. It will return the index where the character was first found or -1 if the string doesn’t contain such a character.

val paragraph = 
    "I am Sam.n" +
    "Sam I am.n" +

    "That Sam-I-am!n" +
    "That Sam-I-am!n" +
    "I do not liken" +
    "That Sam-I-am!n" +

    "Do you liken" +
    "Green eggs and ham?n" +

    "I do not like them,n" +
    "Sam-I-Amn" +
    "I do not liken" +
    "Green eggs and ham.n"

//Index of letter a => 2
println("Index of letter a => " + paragraph.indexOf('a'))

The letter ‘a’ is the 3rd character in the example string. Since computers count starting at 0, the result is 2. This method also has an optional argument that allows it to ignore case.

indexOf(String)

If we want to find where a certain substring begins, we use the indexOf(String) method. It works just like its Char counterpart.

//Index of 'Green eggs and ham' => 91
println("Index of 'Green eggs and ham' => " + paragraph.indexOf("Green eggs and ham"))

The substring “Green eggs and ham” is found at position 91. Once again, this method returns -1 if the search string isn’t found. We can also use the ignoreCase optional argument when we do not care about case sensitivity.

indexOf(Char, Int), indexOf(String, Int)

The indexOf method has an optional startIndex parameter that takes an int value. By default, startIndex is 0, which is why indexOf starts at the beginning of the string. If we want to start looking in the middle of the string, we need to pass a value to startIndex. Let’s look at an example of where we can find all occurrences of the letter ‘I’.

var fromIndex = 0
while(paragraph.indexOf('I', fromIndex) > -1){
    fromIndex = paragraph.indexOf("I", fromIndex)
    println("Found at => " + fromIndex)
    fromIndex++
}

Output

Found at => 0
Found at => 14
Found at => 29
Found at => 44
Found at => 50
Found at => 73
Found at => 111
Found at => 135
Found at => 140

The code tracks each index with a fromIndex variable. We enter into a while loop that continues until indexOf returns -1. With each iteration of the loop, we update fromIndex using indexOf() and pass in the old value of fromIndex. That causes the search to keep moving forward. After we print the index, we need to increment fromIndex by 1 because indexOf is inclusive. Should we fail to increment fromIndex, we will enter into an infinite loop because indexOf will continue to return the same value.

lastIndexOf

Strings also have a lastIndexOf() method that is a cousin to the indexOf() method. It takes the same arguments as indexOf(), but rather than returning the first occurence of the search character or string, it returns the last occurence instead.

//Last index of 'eggs' => 160
println("Last index of 'eggs' => " + paragraph.lastIndexOf("eggs"))

startsWith(), endsWith()

The startsWith() and endsWith() methods are convience methods that are used to check if a string starts or ends with a supplied prefixString. It also has an optional offset parameter that allows for searching in the middle of the string.

//paragraph starts with 'I am Sam' => true
println("paragraph starts with 'I am Sam' => " + paragraph.startsWith("I am Sam"))
//paragraph ends with 'Green eggs and ham. => true
println("paragraph ends with 'Green eggs and ham. => " + paragraph.endsWith("Green eggs and ham.n"))

Putting it Together

Here is an example program followed by the output.

fun main(args : Array<String>){
    val paragraph =
        "I am Sam.n" +
        "Sam I am.n" +

        "That Sam-I-am!n" +
        "That Sam-I-am!n" +
        "I do not liken" +
        "That Sam-I-am!n" +

        "Do you liken" +
        "Green eggs and ham?n" +

        "I do not like them,n" +
        "Sam-I-Amn" +
        "I do not liken" +
        "Green eggs and ham.n"


    println("Index of letter a => " + paragraph.indexOf('a'))
    println("Index of 'Green eggs and ham' => " + paragraph.indexOf("Green eggs and ham"))
    println("Finding all occurrences of 'I'...")
    var fromIndex = 0
    while(paragraph.indexOf('I', fromIndex) > -1){
        fromIndex = paragraph.indexOf("I", fromIndex)
        println("Found at => " + fromIndex)
        fromIndex++
    }
    println("Last index of 'eggs' => " + paragraph.lastIndexOf("eggs"))
    println("paragraph starts with 'I am Sam' => " + paragraph.startsWith("I am Sam"))
    println("paragraph ends with 'Green eggs and ham. => " + paragraph.endsWith("Green eggs and ham.n"))
}

Output

Index of letter a => 2
Index of 'Green eggs and ham' => 91
Finding all occurrences of 'I'...
Found at => 0
Found at => 14
Found at => 29
Found at => 44
Found at => 50
Found at => 73
Found at => 111
Found at => 135
Found at => 140
Last index of 'eggs' => 160
paragraph starts with 'I am Sam' => true
paragraph ends with 'Green eggs and ham. => true

Добавить комментарий