了解removeRange(_ :)文档

11 swift

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

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

摘录自:Apple Inc."The Swift Programming Language."iBooks. https://itun.es/ca/jEUH0.l

嗨,您好,

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

请解释使用此字符串:

let welcome = "hello there"
Run Code Online (Sandbox Code Playgroud)

这就是我的成果:

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

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

使用..<使省略了其上限值的范围

摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/ca/jEUH0.l

welcome.endIndex 将是11

aya*_*aio 19

斯威夫特2

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

var welcome = "hello there"
Run Code Online (Sandbox Code Playgroud)

这一行:

let range = welcome.endIndex.advancedBy(-6)..<welcome.endIndex
Run Code Online (Sandbox Code Playgroud)

意味着我们从string(welcome.endIndex)的末尾开始并向后移动6个字符(前进一个负数=向后移动),然后询问..<我们的位置和字符串结尾()之间的范围(welcome.endIndex).

它创建了一系列5..<11,包含字符串的"那里"部分.

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

welcome.removeRange(range)
Run Code Online (Sandbox Code Playgroud)

然后你的字符串将是剩下的部分:

print(welcome) // prints "hello"
Run Code Online (Sandbox Code Playgroud)

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

welcome = "hello there"
let otherRange = welcome.startIndex.advancedBy(5)..<welcome.endIndex
welcome.removeRange(otherRange)
print(welcome) // prints "hello"
Run Code Online (Sandbox Code Playgroud)

这里我们从string(welcome.startIndex)的开头开始,然后我们前进5个字符,然后我们..<从这里到string(welcome.endIndex)的末尾创建一个range ().

注意:该advance功能可以前进和后退.

斯威夫特3

语法已更改,但概念是相同的.

var welcome = "hello there"
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
print(welcome) // prints "hello"

welcome = "hello there"
let otherRange = welcome.index(welcome.startIndex, offsetBy: 5)..<welcome.endIndex
welcome.removeSubrange(otherRange)
print(welcome) // prints "hello"
Run Code Online (Sandbox Code Playgroud)