246 lines
5.7 KiB
Markdown
246 lines
5.7 KiB
Markdown
|
---
|
|||
|
title: Strings
|
|||
|
localeTitle: Струны
|
|||
|
---
|
|||
|
# Струны
|
|||
|
|
|||
|
Строка - это базовый тип данных на языке программирования. Строки представлены типом `String` . Строки неизменяемы. У Kotlin есть богатый API для работы со строками.
|
|||
|
|
|||
|
### Основное использование
|
|||
|
|
|||
|
#### декларация
|
|||
|
|
|||
|
```kotlin
|
|||
|
// Explicit type declaration
|
|||
|
var firstName : String = "Elon"
|
|||
|
|
|||
|
// or Implicit type declaration and will still compile
|
|||
|
val lastName = "Musk"
|
|||
|
```
|
|||
|
|
|||
|
Кроме того, обратите внимание на использование типа переменной `val` , вот как он себя ведет
|
|||
|
|
|||
|
```kotlin
|
|||
|
firstName = "Mark" // can be changed
|
|||
|
lastName = "Zuckerberg" // cannot be changed
|
|||
|
lastName = 12 // Error: type mismatch
|
|||
|
```
|
|||
|
|
|||
|
#### Конкатенация строк
|
|||
|
|
|||
|
Показан в фрагменте кода, как и Java, добавляя `Int` к `String` приведет к выводу `String`
|
|||
|
|
|||
|
```kotlin
|
|||
|
var str = "abc" + 1
|
|||
|
println(str + "def")
|
|||
|
```
|
|||
|
|
|||
|
Вывод:
|
|||
|
|
|||
|
```shell
|
|||
|
abc1def
|
|||
|
```
|
|||
|
|
|||
|
Даже без явного преобразования значения `Int` 1 в объект `String` , в результате результат остается `String` .
|
|||
|
|
|||
|
#### Строка с несколькими строками
|
|||
|
|
|||
|
Программисты могут объявлять переменные `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]) // Error: index out of bounds
|
|||
|
```
|
|||
|
|
|||
|
#### Итерация через строку
|
|||
|
|
|||
|
Элементы строки - это символы, к которым можно получить доступ посредством операции индексирования: `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" // Error
|
|||
|
```
|
|||
|
|
|||
|
#### Повторное присвоение значений 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
|
|||
|
|
|||
|
### сравнить с
|
|||
|
|
|||
|
Сравнивает этот объект с указанным объектом для заказа. Возвращает ноль, если этот объект равен указанному другому объекту, отрицательное число, если оно меньше другого, или положительное число, если оно больше другого.
|
|||
|
|
|||
|
```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
|
|||
|
```
|
|||
|
|
|||
|
### равняется
|
|||
|
|
|||
|
Указывает, является ли объект `String` в точности равным другому объекту `String`
|
|||
|
|
|||
|
```kotlin
|
|||
|
var str = "Example"
|
|||
|
var str2 = "Example2"
|
|||
|
println(str.equals("Example"))
|
|||
|
println(str2.equals("Example"))
|
|||
|
```
|
|||
|
|
|||
|
Вывод:
|
|||
|
|
|||
|
```shell
|
|||
|
true
|
|||
|
false
|
|||
|
```
|
|||
|
|
|||
|
### получить
|
|||
|
|
|||
|
Возвращает символ в указанном индексе в этой последовательности символов.
|
|||
|
|
|||
|
\`\` \`kotlin var str = "Пример" Println (str.get (3))
|
|||
|
```
|
|||
|
Output:
|
|||
|
```
|
|||
|
|
|||
|
оболочка м
|
|||
|
```
|
|||
|
### toString
|
|||
|
|
|||
|
Returns a string representation of the object.
|
|||
|
```
|
|||
|
|
|||
|
Котлин println (9.toString () + 10) println (9 + 10)
|
|||
|
```
|
|||
|
Output:
|
|||
|
```
|
|||
|
|
|||
|
оболочка "910" 19 \`\` \`
|
|||
|
|
|||
|
#### Ресурсы
|
|||
|
|
|||
|
* [Основные типы Котлина](https://kotlinlang.org/docs/reference/basic-types.html)
|
|||
|
* [Ссылка для ссылки на Kotlin](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
|