Перечислить строку из определенного индекса во вложенном цикле в Swift - PullRequest
0 голосов
/ 28 сентября 2019

Чтобы получить символы из String, используя enumerated() метод

let str = "Hello"

for (i,val) in str.enumerated() {
        print("\(i) -> \(val)")
}

, теперь пытаюсь перечислить ту же строку внутри цикла for, но из позиции i , например

for (i,val) in str.enumerated() {
        print("\(i) -> \(val)")
        for (j,val2) in str.enumerated() {
            // val2 should be from i postion instead starting from zero
        }
}

Как перечислить и установить j позиция должна начинаться с i?

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 сентября 2019

Вы можете использовать dropFirst() для создания представления в строке, начинающейся с определенной позиции:

for (i,val) in str.enumerated() {
    print("i: \(i) -> \(val)")
    for (j, val2) in str.dropFirst(i).enumerated() {
        print("j: \(i+j) -> \(val2)")
    }
}

Вам нужно добавить i во второй цикл, если вы хотите получить индекс, соответствующийк исходной строке, в противном случае j будет содержать индекс в представлении, созданном dropFirst()

1 голос
/ 28 сентября 2019

Вы можете использовать for in str.indices и запускать внутренний цикл на основе внешнего цикла.

let str = "abc"

for i in str.indices {
    for j in str[i...].indices {
        print(str[j])
    }
}

Вывод: a b c b c c


(Предложение от @ LeoDabus )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...