255 lines
5.9 KiB
Markdown
255 lines
5.9 KiB
Markdown
---
|
||
title: Strings
|
||
localeTitle: Строки
|
||
---
|
||
# Строки
|
||
|
||
Строка - один из базовых типов данных в языке программирования Kotlin. Строки представлены типом `String`. Строки неизменяемы. Kotlin имеет богатый API для удобной работы со строками.
|
||
|
||
### Основное использование
|
||
|
||
#### Объявление
|
||
|
||
```kotlin
|
||
// явное объявление типа
|
||
var firstName : String = "Elon"
|
||
|
||
// или неявное объявление типа (оба варианта скомпилируются)
|
||
val lastName = "Musk"
|
||
```
|
||
|
||
Кроме того, обратите внимание на использование ключевого слова `val` при объявлении переменной, вот как оно себя ведет:
|
||
|
||
```kotlin
|
||
firstName = "Mark" // переменная может быть изменена
|
||
lastName = "Zuckerberg" // переменная не может быть изменена
|
||
lastName = 12 // Ошибка: несоответствие типов
|
||
```
|
||
|
||
#### Сложение строк (конкатенация)
|
||
|
||
В нижеприведённом примере мы прибавляем `Int` к `String`, что приведёт к выводу `String`.
|
||
|
||
```kotlin
|
||
var str = "abc" + 1
|
||
println(str + "def")
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
abc1def
|
||
```
|
||
|
||
Даже без явного преобразования значения `Int` (в данном случае 1) в объект `String` в результате получается `String`.
|
||
|
||
#### Строка с несколькими строками
|
||
|
||
Kotlin позволяет объявлять переменные `String` с несколькими строками, используя тройные кавычки вместо одинарных:
|
||
|
||
```kotlin
|
||
var str = """
|
||
This is line 1
|
||
This is line 2
|
||
This is line 3
|
||
"""
|
||
println(str)
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
This is line 1
|
||
This is line 2
|
||
This is line 3
|
||
```
|
||
|
||
или с `.trimIndent()`
|
||
|
||
Использование `trimIndent()` дополнительно помогает обеспечить чистый выходной формат, удалив лишние и ненужные отступы в каждой строке. Изучите фрагмент кода ниже:
|
||
|
||
```kotlin
|
||
var str = """
|
||
This is line 1
|
||
This is line 2
|
||
This is line 3
|
||
""".trimIndent()
|
||
println(str)
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
This is line 1
|
||
This is line 2
|
||
This is line 3
|
||
```
|
||
|
||
### Доступ к символам строки
|
||
|
||
#### Доступ по индексу
|
||
|
||
Программисты могут обращаться к элементам (символам) строки, используя оператор доступа по индексу:
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
println(str[2])
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
a
|
||
```
|
||
|
||
Это похоже на доступ к элементу из массива. Другой пример:
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
println(str[9]) // Ошибка: индекс выходит за границы
|
||
```
|
||
|
||
#### Итерация через строку
|
||
|
||
Элементы строки - это символы, к которым можно получить доступ через индекс: `s[i]` .
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
for (c in str) {
|
||
println(c)
|
||
}
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
E
|
||
x
|
||
a
|
||
m
|
||
p
|
||
l
|
||
e
|
||
```
|
||
|
||
### Неизменяемость строки
|
||
|
||
Как и в Java, вы не можете изменять отдельные элементы `String`:
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
str[2] = "b" // Ошибка
|
||
```
|
||
|
||
#### Повторное присвоение значений String
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
println(str)
|
||
str = "Example was changed"
|
||
println(str)
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
Example
|
||
Example was changed
|
||
```
|
||
|
||
### Свойства строки
|
||
|
||
#### Определение длины строки
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
println(str.length)
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
7
|
||
```
|
||
|
||
### Функции строки
|
||
|
||
Это некоторые из обычных функций `String`, доступных в текущей версии Kotlin.
|
||
|
||
### compareTo
|
||
|
||
Сравнивает данный объект с другим указанным объектом. Возвращает ноль, если данный объект равен указанному другому объекту, отрицательное число, если данный объект "меньше" другого, или положительное число, если объект "больше" другого.
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
var str2 = "Example123"
|
||
var str3 = "Example12345"
|
||
println(str.compareTo(str2))
|
||
println(str.compareTo(str3))
|
||
println(str3.compareTo(str))
|
||
println(str.compareTo("Example"))
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
-3
|
||
-5
|
||
5
|
||
0 # Equal
|
||
```
|
||
|
||
### equals
|
||
|
||
Указывает, является ли объект `String` в точности равным другому объекту `String`
|
||
|
||
```kotlin
|
||
var str = "Example"
|
||
var str2 = "Example2"
|
||
println(str.equals("Example"))
|
||
println(str2.equals("Example"))
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
true
|
||
false
|
||
```
|
||
|
||
### get
|
||
|
||
Возвращает символ в указанном индексе в этой последовательности символов.
|
||
|
||
``` kotlin
|
||
var str = "Example"
|
||
println(str.get(3))
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
m
|
||
```
|
||
|
||
### toString
|
||
|
||
Возвращает строковое представление объекта.
|
||
|
||
```kotlin
|
||
println(9.toString() + 10)
|
||
println(9 + 10)
|
||
```
|
||
|
||
Вывод:
|
||
|
||
```shell
|
||
"910"
|
||
19
|
||
```
|
||
|
||
#### Ресурсы
|
||
|
||
* [Основные типы языка Kotlin](https://kotlinlang.org/docs/reference/basic-types.html)
|
||
* [String в Kotlin](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
|