Строки. Типы Character и String


Для работы с текстом применяются два типа данных: Character и String. Character представляет отдельный символ, а String - строку из нескольких символов. При этом надо отметить, что String - это не просто набор объектов Character, это отдельный тип, который по функциональности отличается.

Самый простой способ определения строки и символов представляет использование строковых литералов - значений в двойных кавычках:

1
2
var a: Character = "a"
var hello: String = "hello"
В отличие от строки в переменную типа Character мы не можем засунуть больше одного символа, то есть в следующем случае мы столкнемся с ошибкой:

1
var a: Character = "abc"
Строки могут быть пустыми, то есть по сути не содержать ничего, но при этом быть инициализированными:

1
2
var str1: String = ""
var str2: String = String()
Пустая строка создается при помощи присвоения "" или при помощи инициализатора String()

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

\n: перевод на новую строку

\t: табуляция

\": кавычка

\\: обратный слеш

Например, мы хотим определить многострочный текст, в котором будут использоваться кавычки и обратные слеши:

1
2
let text = "ООО \"Рога и копыта 777\" \nГен. директор: Иванов"
print(text)
XCode Playground интерпретирует данную строку следующим образом:

ООО "Рога и копыта 777"
Ген. директор: Иванов
Но, начиная с версии языка 4.0, для создания многострочных строк можно заключать строку в тройные кавычки """:

1
2
3
4
5
let text = """
ООО "Рога и копыта 777"
Ген. директор: Иванов
"""
print(text)
Результат будет тот же, что и в примере выше. Кроме того, внутри многострочных строк кавычки не надо экранировать с помощью обратного слеша.

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

1
2
var number: Int = 22
var str: String = String(number) // "22"
Конкатенация строк
Для конкатенации (объединения) строк используется оператор + (плюс):

1
2
3
var str: String = "" // ""
str += "hello" // "hello"
str = str + " world" // "hello word"
Интерполяция строк
Интерполяция представляет собой объединение в строку различных литералов и значений, которые могут представлять другие типы данных. Для интерполяции объекты других типов данных заключаются в скобки, перед которыми ставится слеш:

1
2
3
4
5
var age: Int = 22
var str: String = "Age: \(age)" // "Age: 22"

var weight: Double = 70.58
str = "Age: \(age) and weight: \(weight)" // "Age: 22 and weight: 70.58"
Также интерполяция может содержать сложные выражения и операции, например:

1
2
3
4
let x1 = 5
let x2 = 6
let str = "x1 + x2 = \(x1 + x2)"
print(str) // x1 + x2 = 11