Основы Swift / 6.4. Строки и символы 1 - Основы


Видео


Строки и символы - основы
Строка это последовательность символов, например, "Здравствуй, мир!" или "стриж". Swift-строки представлены типом String.

Swift-типы String и Character предоставляют быстрый, Unicode-совместимый способ работы с текстом в Вашем коде.

Несмотря на простоту синтаксиса, тип String в Swift - это быстрый, современный вид реализации строк. Каждая строка составлена из независимых от кодировки символов Юникода и предоставляет поддержку для доступа к тем символам в различных репрезентациях Юникода.

Тип String в Swift взаимозаменяем с классом NSString из Foundation. Foundation также расширяет тип String путём добавления методов, заданных в NSString. Это означает, что если импортировать Foundation, Вы можете получить доступ к этим методам NSString на типе String без приведения типов.

Вы можете использовать заранее заданные значения типа String в Вашем коде в качестве строковых литералов. Строковый литерал - это последовательность символов, окружённых двойными кавычками (").

Используйте строковый литерал в качестве изначального значения для константы или переменной:
@{6.4\1}

let someString = "Некий строковый литерал"
                    
Отметьте, что Swift выводит тип String для константы someString, так как она инициализируется строковым литералом.
Многострочные строковые литералы
Если Вам нужна строка, разделённая на несколько линий, используйте многострочный строковый литерал. Многострочный строковый литерал - это последовательность символов, окружённых тремя двойными кавычками:
@{6.4\2}

let quotation = """
Белый кролик надел свои очки. "Откуда я должен начать, Ваше величество?" - спросил он.

"Начни с начала," - сказал король гордо - "и иди
пока ты не дойдёшь до конца; затем остановись."
"""
                    
Многострочные строковые литералы 2
Так как многострочная форма использует три двойные кавычки вместо одной, то Вы можете включить одну двойную кавычку (") внутрь многострочного строкового литерала. Чтобы включить литерал """ в многострочную строку, Вы должны экранировать хотя бы один из знаков кавычек, используя обратный слэш (\). Например:
@{6.4\3}

let threeDoubleQuotes = """
Экранирование первой кавычки \"""
Экранирование всех трёх кавычек \"\"\"
"""
                    
Многострочные строковые литералы и перенос строки
В своей многострунной форме строковый литерал включает все линии между открывающими и закрывающими кавычками. Строка начинается с первой строки после открывающих кавычек (""") и оканчивается на строке перед закрывающими кавычками ("""), что значит, что quotation не начинается или не заканчивается переносом строки. Обе строки ниже одинаковы:
@{6.4\4}

let singleLineString = "Эти строки одинаковы."
let multilineString = """
Эти строки одинаковы.
"""
                    
Многострочные строковые литералы и перенос строки 2
Чтобы сделать многострочный строковый литерал, что начинается или заканчивается с переноса строки, напишите пустую строку в качестве первой или последней строки. Например:
@{6.4\5}

"""

Эта строка начинается с переноса строки.
Она так же заканчивается с переноса строки.

"""
                    
Форматирование многострочных строк
Многострочная строка может быть вдвинута с помощью табуляции, чтобы совпадать с оформлением окружающего кода. Пробелы перед закрывающими кавычками (""") говорят Swift, что точно такое же количество пробелов нужно проигнорировать на других строках.

Однако, если Вы напишите пробелы в начале строки в дополнение к тому количеству, что стоит перед закрывающими кавычками ("""), то это количество пробелов будет включено.
Создание пустой строки
Чтобы создать пустую строку можно либо использовать пустой строковый литерал, или пустой конструктор типа String:
@{6.4\6}

var emptyString = "" //Пустой строковый литерал
var anotherEmptyString = String() // Синтаксис конструктора
// эти две строки обе пусты и эквивалентны друг другу
                    
Проверка строки на пустоту
Чтобы узнать пуста ли строка, используйте её Булево свойство isEmpty:
@{6.4\7}

var emptyString = ""
if emptyString.isEmpty {
    print("Здесь не на что смотреть")
}
// Печатает "Здесь не на что смотреть"