Объяснение lastIndex of: и firstIndex of: используется в строке в Swift - PullRequest
0 голосов
/ 20 сентября 2019

Я решаю проблему программирования в Swift, и я нашел онлайн решение, которое мне не совсем понятно, проблема в следующем: написать функцию, которая меняет символы в скобках (возможно, вложенных) во входной строке.решение:

var inputString = "foo(bar)baz(ga)kjh"

    var s = inputString
    while let openIdx = s.lastIndex(of: "(") {
        let closeIdx = s[openIdx...].firstIndex(of:")")!
        s.replaceSubrange(openIdx...closeIdx, with: s[s.index(after: openIdx)..<closeIdx].reversed())
    }

print (s) // output: foorabbazagkjh (the letters inside the braces are reversed) 

Я хотел бы получить подробную информацию о: lastIndex(of: в этом случае и о том, что let closeIdx = s[openIdx...].firstIndex(of:")")! также делает

1 Ответ

0 голосов
/ 20 сентября 2019

Лучшее место для экспериментов с такими вопросами - Детская площадка .Кроме того, ознакомьтесь с документацией .

. Теперь давайте рассмотрим каждый из операторов:

let openIdx = s.lastIndex(of: "(") // it will find the last index of "(", the return type here is Array.Index?

, так что если я напечатаю значение после с индексом, включающим до концастрока, это будет

print(s[openIdx!...]) // `!` exclamation is used for forced casting
// (ga)kjh

Теперь для вашего второго вопроса;

let closeIdx = s[openIdx...].firstIndex(of:")")!

Позвольте разбить его на части s[openIdx...] равен (ga)kjh на первой итерации и поэтому он вернет индекс ) после a.

Предложение будетвсегда нарушайте утверждение и узнайте, что делает каждое выражение.

...