Ответ 1
Swift 2
Мы будем использовать var
, так как removeRange
должен работать с изменяемой строкой.
var welcome = "hello there"
Эта строка:
let range = welcome.endIndex.advancedBy(-6)..<welcome.endIndex
означает, что мы начинаем с конца строки (welcome.endIndex
) и возвращаемся на 6 символов (вперед по отрицательному числу = назад), затем задаем диапазон (..<
) между нашей позицией и конец строки (welcome.endIndex
).
Он создает диапазон 5..<11
, который включает в себя "там" часть строки.
Если вы удалите этот диапазон символов из строки с помощью:
welcome.removeRange(range)
тогда ваша строка будет остальной частью:
print(welcome) // prints "hello"
Вы можете сделать это другим способом (начиная с начального индекса строки) для того же результата:
welcome = "hello there"
let otherRange = welcome.startIndex.advancedBy(5)..<welcome.endIndex
welcome.removeRange(otherRange)
print(welcome) // prints "hello"
Здесь мы начинаем с начала строки (welcome.startIndex
), затем мы продвигаем на 5 символов, затем делаем диапазон (..<
) отсюда до конца строки (welcome.endIndex
).
Примечание: функция advance
может работать вперед и назад.
Swift 3
Синтаксис изменился, но понятия одинаков.
var welcome = "hello there"
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
print(welcome) // prints "hello"
welcome = "hello there"
let otherRange = welcome.index(welcome.startIndex, offsetBy: 5)..<welcome.endIndex
welcome.removeSubrange(otherRange)
print(welcome) // prints "hello"