从 Swift 的嵌套循环中的特定索引枚举字符串
Enumerate String from specific index in nested loop in 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
开始?
谢谢
您可以使用 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 的建议)
您可以使用 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
会持有[=11=创建的视图中的索引]
如果我正确理解问题陈述,OP 需要这个 -
Hello
ello
llo
lo
o
我们可以使用Apple提供的suffix
方法
let str = "Hello"
var lengthOfString = str.count
for (i, val) in str.enumerated() {
print(String(str.suffix(lengthOfString - i)))
}
我们不需要上面for循环中的val
,所以我们可以重写上面的for循环如下。
var str = "Hello"
var lengthOfString = str.count
for i in 0..<lengthOfString {
print(String(str.suffix(lengthOfString - i)))
}
以上两个 for 循环都会给出相同的期望输出。
使用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
开始?
谢谢
您可以使用 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 的建议)
您可以使用 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
会持有[=11=创建的视图中的索引]
如果我正确理解问题陈述,OP 需要这个 -
Hello
ello
llo
lo
o
我们可以使用Apple提供的suffix
方法
let str = "Hello"
var lengthOfString = str.count
for (i, val) in str.enumerated() {
print(String(str.suffix(lengthOfString - i)))
}
我们不需要上面for循环中的val
,所以我们可以重写上面的for循环如下。
var str = "Hello"
var lengthOfString = str.count
for i in 0..<lengthOfString {
print(String(str.suffix(lengthOfString - i)))
}
以上两个 for 循环都会给出相同的期望输出。