修改切片从字符串到字符串函数,以返回最后一个索引,如果找不到字符串

我有一个切片function,我在这里 。 我想知道如何修改它,以便如果找不到to字符串,但是from找到它将返回整个字符串的结束索引( .count-1 )。 现在,如果我调用.slice并且找不到字符串,那么它显然会崩溃。

 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.. 

它不像原版那样“花哨”,但我个人认为逻辑更容易阅读。