为 Swift 4 更新
检查字符串的开头和结尾
您可以使用hasPrefix(_:) 和hasSuffix(_:) 方法来测试与另一个字符串的相等性。
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
获取实际的前缀和后缀子字符串
为了获取实际的前缀或后缀子字符串,您可以使用以下方法之一。我推荐第一种方法,因为它很简单。所有方法都使用str作为
let str = "Hello, playground"
方法一:(推荐)prefix(Int)和suffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
我认为这是更好的方法。与下面的方法 2 和 3 不同,如果索引超出范围,此方法不会崩溃。它只会返回字符串中的所有字符。
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
当然,有时崩溃是好的,因为它们让您知道您的代码存在问题。所以也考虑下面的第二种方法。如果索引超出范围,它将引发错误。
方法二:prefix(upto:)和suffix(from:)
Swift 字符串索引很棘手,因为它们必须考虑特殊字符(如表情符号)。但是,一旦获得索引,就很容易获得前缀或后缀。 (参见String.Index 上的my other answer。)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
如果你想防止越界,你可以使用limitedBy创建一个索引(再次参见this answer)。
方法三:下标
由于String是一个集合,所以可以使用下标来获取前缀和后缀。
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
进一步阅读