了解removeRange(_ :)文档

时间:2015-05-03 18:53:31

标签: swift

  

要删除指定范围的子字符串,请使用removeRange(_ :)   方法:

1 let range = advance(welcome.endIndex, -6)..<welcome.endIndex
2 welcome.removeRange(range)
3 println(welcome)
4 // prints "hello"
     

摘自:Apple Inc.“The Swift Programming Language。”iBooks。   https://itun.es/ca/jEUH0.l

你好,

我不完全理解上面代码中第1行的语法和功能。

请使用此字符串解释:

let welcome = "hello there"

这就是我已经解决的问题:

  

&#34;要更改开始和结束索引,请使用advance()。&#34;
  来自:https://stackoverflow.com/a/24045156/4839671

欢迎提供更好的advance()文档。即它的论点

  

使用..<创建一个省略其上限值的范围

     

摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/ca/jEUH0.l

welcome.endIndex将是11

1 个答案:

答案 0 :(得分:18)

Swift 2

我们将使用var,因为removeRange需要对可变字符串进行操作。

var welcome = "hello there"

这一行:

let range = welcome.endIndex.advancedBy(-6)..<welcome.endIndex

表示我们从字符串的末尾开始(welcome.endIndex)并向后移动6个字符(以负数前进=后退),然后询问范围(..<)之间的距离我们的位置和字符串的结尾(welcome.endIndex)。

它会创建一系列5..<11,其中包含字符串的“there”部分。

如果您从字符串中删除此字符范围

welcome.removeRange(range)

那么你的字符串将是剩下的部分:

print(welcome) // prints "hello"

您可以采用另一种方式(从字符串的起始索引)获得相同的结果:

welcome = "hello there"
let otherRange = welcome.startIndex.advancedBy(5)..<welcome.endIndex
welcome.removeRange(otherRange)
print(welcome) // prints "hello"

这里我们从字符串(welcome.startIndex)的开头开始,然后我们前进5个字符,然后我们从这里到字符串的末尾({{..<) 1}})。

注意:welcome.endIndex功能可以向前和向后工作。

Swift 3

语法已经改变,但概念是相同的。

advance