JsW*_*JsW 4 string swift swift4
我知道我们可以使用下标来剪切Swift 4中的一部分字符串.
let s = "aString"
let subS = s[..<s.endIndex]
Run Code Online (Sandbox Code Playgroud)
但问题是,如何切割s到像SubString一样aStr.
我的意思是,我想做的就像是s[..<(s.endIndex-3)].
但这不对.
那么,如何在Swift 4中做到这一点.
Mar*_*n R 17
String.Index不是一个整数,你不能简单地减去
s.endIndex - 3,因为"集合移动它们的索引",参见
Swift进化的集合和指数的新模型.
必须注意不要将索引移动到有效范围之外.例:
let s = "aString"
if let upperBound = s.index(s.endIndex, offsetBy: -3, limitedBy: s.startIndex) {
let subS = String(s[..<upperBound])
} else {
print("too short")
}
Run Code Online (Sandbox Code Playgroud)
或者,
let upperBound = s.index(s.endIndex, offsetBy: -3, limitedBy: s.startIndex) ?? s.startIndex
let subS = String(s[..<upperBound])
Run Code Online (Sandbox Code Playgroud)
如果s少于3个字符,将打印一个空字符串.
如果你想要一个字符串的初始部分,那么你可以简单地做
let subS = String(s.dropLast(3))
Run Code Online (Sandbox Code Playgroud)
或作为变异方法:
var s = "aString"
s.removeLast(min(s.count, 3))
print(s) // "aStr"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6371 次 |
| 最近记录: |