Строка представляет собой последовательность символов, например, или . Строки Swift представлены типом. Доступ к содержимому можно получить различными способами, в том числе в виде набора значений."hello, world""albatross"StringStringCharacter

Swift Stringи Characterтипы предоставляют быстрый, Unicode-совместимый способ работы с текстом в вашем коде. Синтаксис для создания и работы со строками является легким и читаемым, а синтаксис строкового литерала аналогичен C. Конкатенация строк так же проста, как объединение двух строк с +оператором, а изменяемость строк управляется выбором между константой или переменной, как и любое другое значение в Swift. Вы также можете использовать строки для вставки констант, переменных, литералов и выражений в более длинные строки, в процессе, известном как интерполяция строк. Это облегчает создание пользовательских строковых значений для отображения, хранения и печати.

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

ЗАМЕТКА

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

Для получения дополнительной информации об использовании Stringс Основой и Какао, посмотрите Соединение между Строкой и NSString .

Строковые литералы

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

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

let someString = "Some string literal value"

Обратите внимание , что Swift выводит тип Stringдля someStringпостоянной , поскольку она инициализируется с буквальным значением строки.

Многострочные строковые литералы

Если вам нужна строка, которая занимает несколько строк, используйте многострочный строковый литерал - последовательность символов, заключенная в три двойные кавычки:

let quotation = """

The White Rabbit put on his spectacles. "Where shall I begin,

please your Majesty?" he asked.



"Begin at the beginning," the King said gravely, "and go on

till you come to the end; then stop."

"""

Многострочный строковый литерал включает все строки между его открывающими и закрывающими кавычками. Строка начинается в первой строке после открывающих кавычек ( """) и заканчивается в строке перед закрывающими кавычками, что означает, что ни одна из строк ниже не начинается и не заканчивается разрывом строки:

let singleLineString = "These are the same."

let multilineString = """

These are the same.

"""

Когда ваш исходный код содержит разрыв строки внутри многострочного строкового литерала, этот разрыв строки также появляется в значении строки. Если вы хотите использовать разрывы строк, чтобы облегчить чтение исходного кода, но не хотите, чтобы разрывы строк были частью значения строки, напишите \в конце этих строк обратную косую черту ( ):

let softWrappedQuotation = """

The White Rabbit put on his spectacles. "Where shall I begin, \

please your Majesty?" he asked.



"Begin at the beginning," the King said gravely, "and go on \

till you come to the end; then stop."

"""

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

let lineBreaks = """



This string starts with a line break.

It also ends with a line break.



"""

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

В приведенном выше примере, несмотря на то, что весь многострочный строковый литерал имеет отступ, первая и последняя строки в строке не начинаются с пробела. Средняя линия имеет больше отступа, чем закрывающие кавычки, поэтому она начинается с этого дополнительного отступа в четыре пробела.

Специальные символы в строковых литералах

Строковые литералы могут включать следующие специальные символы:

  • Экранированные специальные символы \0(нулевой символ), \\(обратная косая черта), \t(горизонтальная табуляция), \n(перевод строки), \r(возврат каретки), \"(двойная кавычка) и \'(одинарная кавычка)
  • Произвольное скалярное значение Unicode, записываемое как \u{n} , где n - шестнадцатеричное число от 1 до 8 цифр (Unicode обсуждается в Unicode ниже)

Код ниже показывает четыре примера этих специальных символов. wiseWordsКонстанта содержит два сбежавших двойные кавычки. Константы dollarSignblackHeartи, sparklingHeartдемонстрируют скалярный формат Unicode:

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"

// "Imagination is more important than knowledge" - Einstein

let dollarSign = "\u{24}" // $, Unicode scalar U+0024

let blackHeart = "\u{2665}" // ♥, Unicode scalar U+2665

let sparklingHeart = "\u{1F496}" //