在Swift中迭代部分String

War*_*zit 1 swift swift3

为什么世界上的Swift String操作如此复杂和令人厌烦?

我必须反向迭代一个String但忽略第一个char.现在可以这样做:

var firstTime = true
for i in textBefore.characters.reversed() {
  if firstTime {
     firstTime = false
  } else {
      if String(i).personalFunction() {
        // something
      } else {
        // something else
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

但实际上我只是想做一些事情:

textBefore = textBefore.characters.reversed() 
for i in 1...textBefore.characters.count {
  if textBefore.get(i).personalFunction() {
    // something
  } else {
    // something else
  }
}
Run Code Online (Sandbox Code Playgroud)

那么为什么我们不能把索引作为int.为什么textBefore.characters.reversed()不是String或只是让String具有反向函数.所有这些问题都让使用Swift中的Strings变得非常令人沮丧并让我们做了一些愚蠢的事情,比如将String转换为一个字符数组:S或类似我上面提出的解决方案的东西...而且我们不能在旧时尚......我只需要一些Swift大师就可以指出我的大脑正确的方向.

Mar*_*n R 7

string.characters是一组人物.用于reversed()以相反的顺序访问元素,并dropFirst()跳过反向集合的初始元素:

let string = "ab"

for ch in string.characters.reversed().dropFirst() {
    print(ch)
    // `ch` is a Character. Use `String(ch)` if you need a String.
}
Run Code Online (Sandbox Code Playgroud)

输出:

b

a