Swift. Строки. Индекс элемента

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
(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
}

Консоль:
Е в а н г е л и е



Назад · Оглавление · Дальше

Personal tools
Namespaces

Variants
Actions
Navigation
Tools