Swift. Строки. Индекс элемента
(Created page with "<div style='max-width:700px;text-align:justify;'> Назад · Оглавление · [[Swift. Строки. ?...") |
|||
Line 2: | Line 2: | ||
[[Swift. Строки. Графем-кластер|Назад]] · | [[Swift. Строки. Графем-кластер|Назад]] · | ||
[[Swift|Оглавление]] · | [[Swift|Оглавление]] · | ||
− | [[Swift. Строки. | + | [[Swift. Строки. Подстрока|Дальше]] |
Line 116: | Line 116: | ||
[[Swift. Строки. Графем-кластер|Назад]] · | [[Swift. Строки. Графем-кластер|Назад]] · | ||
[[Swift|Оглавление]] · | [[Swift|Оглавление]] · | ||
− | [[Swift. Строки. | + | [[Swift. Строки. Подстрока|Дальше]] |
</div> | </div> |
Latest revision as of 19:03, 20 March 2022
Назад · Оглавление · Дальше
Contents |
[edit] startIndex
Индекс первого элемента строки:
let s = "e\u{301}lastic" // "élastic" (первый графем-кластер стоит из двух символов) var index = s.startIndex // String.Index
Свойство startIndex возвращает индекс первого графем-кластера, состоящего из двух символов.
Значение индекса посмотреть нельзя, но можно использовать для получения первой буквы строки:
let char = s[index] char // "é" - первый символ строки type(of: char) // Character.Type
char имеет тип Character, т.е. строка - это коллекция Character
Тип данных индекса:
type(of: index) // String.Index.Type
Index - вложенный в String тип.
String.Index определяет положение графем-кластера внутри строки, т.е. содержит ссылки на область памяти,
где он начинается и заканчивается, и это не значения Int.
[edit] endIndex
Свойство endIndex возвращает индекс, следующий за последним символом в строке:
var endIndex = s.endIndex s[endIndex] // Fatal error: String index is out of bounds // endIndex указывает на позицию, предполагаемую для добавления нового графем-кластера (новой буквы)
[edit] index(before:)
Метод index(before:) возвращает индекс предыдущего (от указанного в аргументе) символа:
var lastChar = s.index(before: endIndex) s[lastChar] // "c" - последний символ строки
[edit] index(after:)
Метод index(after:) возвращает индекс следующего (от указанного в аргументе) символа:
var nextIndex = s.index(after: s.startIndex) s[nextIndex] // "l" s // "élastic"
[edit] index(_:offsetBy:)
Метод index(_:offsetBy:) возвращает символ по указанному смещению.
Первый аргумент - индекс графем-кластера, от которого выполняется смещение,
второй аргумент offsetBy - целое число, указывающее на смещение вправо:
var offsetIndex = s.index(s.startIndex, offsetBy:3) s[offsetIndex] // "s" s // "élastic"
[edit] unicodeScalars
Свойство unicodeScalars содержит коллекцию юникод-скаляров, из которых состоит строка.
Количество элементов строки и количество юникод-скаляров из uncodeScalars, могут отличаться,
если в строке есть двух-символьные графем-кластеры:
s // "élastic" s.count // 7 s.unicodeScalars.count // 8
s.unicodeScalars.count - цепочка вызовов. Длина цепочки не ограничена.
[edit] Пример
var s = "Евангелие" var n = 0 for _ in s { let i = s.index(s.startIndex, offsetBy: n) let ch = s[i] print(ch, terminator: " ") n += 1 } Консоль: Е в а н г е л и е
Назад · Оглавление · Дальше