我有一个切片函数,我得到了 here .我想知道如何修改它,以便如果未找到 to
字符串,但它找到 from
它将返回整个字符串的结束索引( .count-1
).现在,如果我调用 .slice
并且没有找到 to
字符串,它显然会崩溃。
extension String {
func slice(from: String, to: String) -> String? {
return (range(of: from)?.upperBound).flatMap { substringFrom in
(range(of: to, range: substringFrom..<endIndex)?.lowerBound).map { substringTo in
String(self[substringFrom..<substringTo])
}
}
}
}
最佳答案
这是一种可能的解决方案:
extension String {
func slice(from: String, to: String) -> String? {
if let fromRng = range(of: from) {
if let toRng = range(of: to, range: fromRng.upperBound..<endIndex) {
// "from" and "to" found, get parts between
return String(self[fromRng.upperBound..<toRng.lowerBound])
} else {
// "to" not found, return everything after "from"
return String(self[fromRng.upperBound...])
}
} else {
// "from" not found
return nil
}
}
}
它不像原来的那样“花哨”,但我个人认为逻辑更容易阅读。
关于ios - 修改 slice from string to string 函数以在找不到字符串时返回最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341541/