В этой статье вы узнаете о строках Kotlin, строковых шаблонах и некоторых часто используемых строковых свойствах и функциях с помощью примеров.
Котлин Строка
Строки - это последовательность символов. Например, "Hello there!"
это строковый литерал.
В Kotlin все строки являются объектами String
класса. Это означает, что строковые литералы, например "Hello there!"
, реализованы как экземпляры этого класса.
Как создать строковую переменную?
Вот как вы можете определить String
переменную в Kotlin. Например,
val myString = "Привет!"
Здесь myString - это переменная типа String
.
Вы можете объявить переменную типа String
и указать ее тип в одном операторе, а затем инициализировать переменную в другом операторе в программе.
val myString: String… myString = "Привет"
Как получить доступ к символам строки?
Для доступа к элементам (символу) строки используется индексный оператор доступа. Например,
val myString = "Привет!" val item = myString (2)
Здесь переменная item содержит y, третий символ строки myString. Это потому, что индексирование в Kotlin начинается с 0, а не с 1.
val myString = "Привет!" var item: Char item = myString (0) // элемент содержит 'H' item = myString (9) // элемент содержит '!' item = myString (10) // Ошибка! Индекс строки вне диапазона item = myString (-1) // Ошибка! Индекс строки вне допустимого диапазона
Пример: итерация по строке
Если вам нужно перебрать элементы строки, вы можете легко это сделать, используя цикл for.
fun main(args: Array) ( val myString = "Hey!" for (item in myString) ( println(item) ) )
Когда вы запустите программу, вывод будет:
H e y !
Строки в Котлине неизменяемы
Как и Java, строки в Kotlin неизменны. Это означает, что вы не можете изменить отдельный символ строки. Например,
var myString = "Эй!" myString (0) = 'h' // Ошибка! Струны
Однако вы можете снова переназначить строковую переменную, если вы объявили переменную с помощью ключевого слова var
. ( Рекомендуемая литература : Kotlin var Vs val)
Пример: переназначение строковой переменной.
fun main(args: Array) ( var myString = "Hey!" println("myString = $myString") myString = "Hello!" println("myString = $myString") )
Когда вы запустите программу, вывод будет:
myString = Привет! myString = Здравствуйте!
Строковые литералы
Литерал - это представление фиксированного значения в исходном коде. Например, "Hey there!"
это строковый литерал, который появляется непосредственно в программе, не требуя вычислений (как переменные).
В Kotlin есть два типа строковых литералов:
1. Экранированная строка
В экранированной строке могли быть экранированные символы. Например,
val myString = "Привет! n"
Это escape-символ, который вставляет новую строку в текст, где он появляется.
Вот список escape-символов, поддерживаемых в Kotlin:
- Вставляет пробел
- Вставляет новую строку
- Вставляет возврат каретки
\'
- Вставляет символ одинарной кавычки"
- Вставляет символ двойной кавычки\
- Вставляет обратную косую черту$
- Вставляет символ доллара
2. Необработанная строка
Необработанная строка может содержать символы новой строки (не escape-символ новой строки) и произвольный текст. Необработанная строка отделяется тройной кавычкой """
. Например,
fun main(args: Array) ( val myString = """ for (character in "Hey!") println(character) """ print(myString) )
Когда вы запустите программу, вывод будет:
for (символ в "Эй!") println (персонаж)
Вы можете удалить начальные пробелы в исходной строке с помощью функции trimMargin (). Например,
Пример: печать необработанной строки
fun main(args: Array) ( println("Output without using trimMargin function:") val myString = """ |Kotlin is interesting. |Kotlin is sponsored and developed by JetBrains. """ println(myString) println("Output using trimMargin function:") println(myString.trimMargin()) )
Когда вы запустите программу, вывод будет:
Вывод без использования функции trimMargin: | Kotlin интересен. | Kotlin спонсируется и разрабатывается JetBrains. Вывод с использованием функции trimMargin: Kotlin интересен. Kotlin спонсируется и разрабатывается JetBrains.
По умолчанию trimMargin()
функция использует | как префикс маржи. Однако вы можете изменить его, передав этой функции новую строку.
Пример: trimMargin () с аргументом
fun main(args: Array) ( val myString = """ !!! Kotlin is interesting. !!! Kotlin is sponsored and developed by JetBrains. """ println(myString.trimMargin("!!! ")) )
Когда вы запустите программу, вывод будет:
Котлин интересен. Kotlin спонсируется и разрабатывается JetBrains.
Kotlin String Templates
Kotlin has an awesome feature called string templates that allows strings to contain template expressions.
A string template expression starts with a dollar sign $
. Here are few examples:
Example: Kotlin String Template
fun main(args: Array) ( val myInt = 5; val myString = "myInt = $myInt" println(myString) )
When you run the program, the output will be:
myInt = 5
It is because the expression $myInt (expression starting with $ sign) inside the string is evaluated and concatenated into the string.
Example: String Template With Raw String
fun main(args: Array) ( val a = 5 val b = 6 val myString = """ |$(if (a> b) a else b) """ println("Larger number is: $(myString.trimMargin())") )
When you run the program, the output will be:
Larger number is: 6
Few String Properties and Functions
Since literals in Kotlin are implemented as instances of String
class, you can use several methods and properties of this class.
length
property - returns the length of character sequence of an string.compareTo
function - compares this String (object) with the specified object. Returns 0 if the object is equal to the specfied object.get
function - returns character at the specified index.
You can use index access operator instead ofget
function as index access operator internally callsget
function.plus
function - returns a new string which is obtained by the concatenation of this string and the string passed to this function.
You can use+
operator instead ofplus
function as+
operator callsplus
function under the hood.subSequence
Function - returns a new character sequence starting at the specified start and end index.
Example: String Properties and Function
fun main(args: Array) ( val s1 = "Hey there!" val s2 = "Hey there!" var result: String println("Length of s1 string is $(s1.length).") result = if (s1.compareTo(s2) == 0) "equal" else "not equal" println("Strings s1 and s2 are $result.") // s1.get(2) is equivalent to s1(2) println("Third character is $(s1.get(2)).") result = s1.plus(" How are you?") // result = s1 + " How are you?" println("result = $result") println("Substring is "$(s1.subSequence(4, 7)) "") )
When you run the program, the output is:
Длина строки s1 равна 10. Строки s1 и s2 равны. Третий символ - y. result = Привет! Как дела? Подстрока "the"
Посетите класс Kotlin String для получения дополнительной информации о свойствах расширения, расширениях, функциях и конструкторах.