在Swift中是否有一种快速删除字符串中最后两个字符的方法?我看到有一种简单的方法可以清楚地删除最后一个字符,如此处所示。您知道如何删除最后两个字符吗?谢谢!
更新: Xcode 9 • Swift 4 或更高版本
现在String符合RangeReplaceableCollection,因此您可以在String中直接使用集合方法dropLast,因此不再需要扩展。唯一的区别是它返回一个Substring。如果您需要一个String,则需要从其中初始化一个新的String:
let string = "0123456789"
let substring1 = string.dropLast(2) // "01234567"
let substring2 = substring1.dropLast() // "0123456"
let result = String(substring2.dropLast()) // "012345"
我们也可以扩展LosslessStringConvertible
,添加尾随语法,我认为这可以提高可读性:
extension LosslessStringConvertible {
var string: String { .init(self) }
}
使用方法:
let result = substring.dropLast().string
String.dropLast()
返回一个 Substring
,因此根据您的使用方式,您可能需要将其转换为字符串。 - Uncommonvar name: String = "Dolphin"
let endIndex = name.index(name.endIndex, offsetBy: -2)
let truncated = name.substring(to: endIndex)
print(name) // "Dolphin"
print(truncated) // "Dolph"
dropLast(..)
方法相比,此答案中的方法对于长度小于两个字符(仅为空或只有一个字符)的字符串将产生运行时异常。此外,dropLast
方法是Swift本地的,而.substring
是通过Foundation从NSString
转换而来的(不完全是Swift本地的)。 - dfribSwift 4:
let str = "Hello, playground"
let newSTR1 = str.dropLast(3)
print(newSTR1)
output: "Hello, playgro"
//---------------//
let str = "Hello, playground"
let newSTR2 = str.dropFirst(2)
print(newSTR2)
output: "llo, playground"
var myString = "Hello world"
myString.removeLast(2)
output : "Hello wor"
使用 removeSubrange(Range<String.Index>)
就像这样:
var str = "Hello, playground"
str.removeSubrange(Range(uncheckedBounds: (lower: str.index(str.endIndex, offsetBy: -2), upper: str.endIndex)))