用Swift在嵌套循环中从特定索引枚举字符串

13 浏览
0 Comments

用Swift在嵌套循环中从特定索引枚举字符串

使用enumerated()方法从字符串String中获取字符

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开始?

谢谢

admin 更改状态以发布 2023年5月20日
0
0 Comments

你可以使用 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)

0
0 Comments

你可以使用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()创建的视图中的索引。

0