【发布时间】:2019-02-11 13:55:55
【问题描述】:
这个具有两个整数的解决方案有效,但我想改用一个范围:
extension String {
subscript(start: Int, end: Int) -> String? {
return String(self[index(startIndex, offsetBy: start#)...index(startIndex, offsetBy: end)])
}
}
以下两个解决方案使用范围,但都产生相同的错误,不是在扩展代码中,而是在尝试使用它时:
'subscript' 不可用:不能用整数范围为字符串下标。
这是一个荒谬的错误,它基本上告诉我 String 没有范围下标,而实际上我只是创建了它,所以它确实存在。
extension String {
subscript(range: Range<String.IndexDistance>) -> String? {
return String(self[index(startIndex, offsetBy: range????.startIndex)...index(startIndex, offsetBy: range????.endIndex)])
}
subscript(range: Range<Int>) -> String? {
return String(self[index(startIndex, offsetBy: range.startIndex)...index(startIndex, offsetBy: range.endIndex)])
}
}
let greeting = "Hello, World"
print(greeting[0...4]) // should print "Hello"
【问题讨论】: