freeCodeCamp/guide/russian/kotlin/strings/index.md

255 lines
5.9 KiB
Markdown
Raw Normal View History

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