Как увеличить строку.Индекс в swift3?

в swift2.3 ++ оператор используется для строки.увеличение индекса

например. i++

Я изменил на swift 3, что код произойдет " Унарный оператор ' ++ ' не может быть применен к операнду типа '@lvalue String.Index ' (aka '@lvalue String.CharacterView.Index') " в swift 3

я перепишу например. i + = 1

но этот код не может решить. Пожалуйста, помогите мне.

2 ответов


String.Index - это typealias для String.CharacterView.Index. Сам по себе индекс не может быть увеличен. Скорее, вы можете использовать index(after:) метод экземпляра на CharacterView что вы использовали для извлечения индекса.

например:

let str = "foobar"
let chars = str.characters

if let bIndex = chars.index(of: "b") {
    let nextIndex = chars.index(after: bIndex)
    print(str[bIndex...nextIndex]) // ba
}

или, учитывая, что у вас есть индекс (например,str.startIndex), вы можете использовать index(_:, offsetBy:) метод экземпляра доступен также непосредственно для String случаях:

let str = "foobar"
let startIndex = str.startIndex
let nextIndex = str.index(startIndex, offsetBy: 1)
print(str[startIndex...nextIndex]) // fo

String.Index нет ++, +=, или любой вид оператора (за исключением сравнений, например <, >, ==), определенной для него. Он имеет другие методы, определенные для перемещения индекса. Чтобы увеличить позицию индекса 1, код будет выглядеть так:string.index(i, offsetBy: 1)

let string = "Some string"
var i = string.startIndex
i = string.index(i, offsetBy: 1)