我写了一个快速函数,它接受一个字符串和一个范围作为它的参数。如何检查字符串的范围是否有效?
编辑:无意义的例子
func foo(text: String, range: Range<String.Index>) ->String? {
// what can I do here to ensure valid range
guard *is valid range for text* else {
return nil
}
return text[range]
}
var str = "Hello, world"
let range = str.rangeOfString("world")
let str2 = "short"
let text = foo(str2, range: range!)
发布于 2019-10-29 16:37:36
Swift 5
extension String {
func hasRange(_ range: NSRange) -> Bool {
return Range(range, in: self) != nil
}
}
发布于 2016-09-19 07:35:40
不幸的是,我无法测试Matt的解决方案,因为我使用的是swift 2.2。然而,根据他的想法我想到了.
func foo(text: String, range: Range<String.Index>) -> String? {
let r = text.startIndex..<text.endIndex
if r.contains(range.startIndex) && r.contains(range.endIndex) {
return text[range]
} else {
return nil
}
}
如果开始和结束索引都是可以的,那么整个范围也是如此。
https://stackoverflow.com/questions/39553748
复制相似问题