Swift - струны
Строки в Swift 4 представляют собой упорядоченный набор символов, таких как «Hello, World!» и они представлены типом данных Swift 4String, который, в свою очередь, представляет собой набор значений Character тип.
Создать строку
Вы можете создать String либо с помощью строкового литерала, либо создав экземпляр класса String следующим образом:
// String creation using String literal
var stringA = "Hello, Swift 4!"
print( stringA )
// String creation using String instance
var stringB = String("Hello, Swift 4!")
print( stringB )
//Multiple line string
let stringC = """
Hey this is a
example of multiple Line
string by tutorialsPoint
"""
print(stringC)
Когда приведенный выше код компилируется и выполняется, он дает следующий результат
Hello, Swift 4!
Hello, Swift 4!
Hey this is a
example of multiple Line
string by tutorialsPoint
Пустой строкой
Вы можете создать пустую строку, используя пустой строковый литерал или создав экземпляр класса String, как показано ниже. Вы также можете проверить, пуста ли строка или нет, используя свойство BooleanisEmpty.
// Empty string creation using String literal
var stringA = ""
if stringA.isEmpty {
print( "stringA is empty" )
} else {
print( "stringA is not empty" )
}
// Empty string creation using String instance
let stringB = String()
if stringB.isEmpty {
print( "stringB is empty" )
} else {
print( "stringB is not empty" )
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
stringA is empty
stringB is empty
Строковые константы
Вы можете указать, может ли ваша строка быть изменена (или видоизменена), назначив ее переменной, или она будет постоянной, назначив ее константе, используя let ключевое слово, как показано ниже -
// stringA can be modified
var stringA = "Hello, Swift 4!"
stringA + = "--Readers--"
print( stringA )
// stringB can not be modified
let stringB = String("Hello, Swift 4!")
stringB + = "--Readers--"
print( stringB )
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Playground execution failed: error: <EXPR>:10:1: error: 'String' is not
convertible to '@lvalue UInt8'
stringB + = "--Readers--"
Строчная интерполяция
Интерполяция строк - это способ создания нового значения String из смеси констант, переменных, литералов и выражений путем включения их значений в строковый литерал.
Каждый элемент (переменная или константа), который вы вставляете в строковый литерал, заключен в пару круглых скобок с префиксом обратной косой черты. Вот простой пример -
var varA = 20
let constA = 100
var varC:Float = 20.0
var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"
print( stringA )
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
20 times 100 is equal to 2000.0
Конкатенация строк
Вы можете использовать оператор + для объединения двух строк или строки и символа или двух символов. Вот простой пример -
let constA = "Hello,"
let constB = "World!"
var stringA = constA + constB
print( stringA )
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Hello,World!
Длина строки
У Swift 4 струны нет lengthсвойство, но вы можете использовать глобальную функцию count () для подсчета количества символов в строке. Вот простой пример -
var varA = "Hello, Swift 4!"
print( "\(varA), length is \((varA.count))" )
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Hello, Swift 4!, length is 15
Сравнение строк
Вы можете использовать оператор == для сравнения двух строковых переменных или констант. Вот простой пример -
var varA = "Hello, Swift 4!"
var varB = "Hello, World!"
if varA == varB {
print( "\(varA) and \(varB) are equal" )
} else {
print( "\(varA) and \(varB) are not equal" )
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Hello, Swift 4! and Hello, World! are not equal
Итерация строки
Строки снова представляют собой набор значений в swift 4, поэтому мы можем перебирать строку с помощью циклов. -
for chars in "ThisString" {
print(chars, terminator: " ")
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
T h i s S t r i n g
Строки Юникода
Вы можете получить доступ к UTF-8 и UTF-16 представлению String, перебирая его свойства utf8 и utf16, как показано в следующем примере:
var unicodeString = "Dog???"
print("UTF-8 Codes: ")
for code in unicodeString.utf8 {
print("\(code) ")
}
print("\n")
print("UTF-16 Codes: ")
for code in unicodeString.utf16 {
print("\(code) ")
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
UTF-8 Codes:
68
111
103
63
63
63
UTF-16 Codes:
68
111
103
63
63
63
Строковые функции и операторы
Swift 4 поддерживает широкий спектр методов и операторов, связанных со строками -
Старший Нет | Функции / Операторы и цель |
---|---|
1 | isEmpty Логическое значение, определяющее, пуста строка или нет. |
2 | hasPrefix(prefix: String) Функция для проверки, существует ли данная строка параметров как префикс строки или нет. |
3 | hasSuffix(suffix: String) Функция для проверки, существует ли данная строка параметра как суффикс строки или нет. |
4 | toInt() Функция для преобразования числового значения String в Integer. |
5 | count() Глобальная функция для подсчета количества символов в строке. |
6 | utf8 Свойство, возвращающее представление строки в кодировке UTF-8. |
7 | utf16 Свойство, возвращающее представление строки в кодировке UTF-16. |
8 | unicodeScalars Свойство для возврата скалярного представления строки в Юникоде. |
9 | + Оператор для объединения двух строк, или строки и символа, или двух символов. |
10 | += Оператор для добавления строки или символа к существующей строке. |
11 | == Оператор для определения равенства двух строк. |
12 | < Оператор для выполнения лексикографического сравнения, чтобы определить, оценивается ли одна строка как меньшая, чем другая. |
13 | startIndex Чтобы получить значение в начальном индексе строки. |
14 | endIndex Чтобы получить значение в конце индекса строки. |
15 | Indices Чтобы получить доступ к индексам по одному. т.е. все символы строки один за другим. |
16 | insert("Value", at: position) Чтобы вставить значение в позицию. |
17 | remove(at: position) removeSubrange(range) для удаления значения в позиции или для удаления диапазона значений из строки. |
18 | reversed() возвращает обратную сторону строки |