Swift 3 内范围对象上 NSRange.location 的等效值是多少?
What is the equivalent value for NSRange.location on the Range Object within Swift 3?
有没有人能给我一个提示,Range 的 属性 等价于 属性 到 NSRange 的位置 属性。
我特别感兴趣的是如何从 Swift 2.3 -> Swift 3.0
迁移以下代码行
if myRange.location != NSNotFound { ... }
myRange 仍然是一个范围 属性 所以编译器告诉我正确的:
类型范围的值没有成员位置
检查空属性是否足够?
if !myRange.isEmpty { ... }
提前致谢
如评论所说,您不会返回 NSNotFound,而是得到一个 nil 范围。
虽然 .location 已替换为 .lowerBound 和 .upperBound,但要回答您的问题。
let s = "The yellow dog is nice"
if let range = s.range(of: "dog")
{
print(s[range.lowerBound...]) //prints "dog is nice"
print(s[range.upperBound...]) //prints " is nice"
print(s[range.lowerBound..<range.upperBound]) //prints "dog"
}
有没有人能给我一个提示,Range 的 属性 等价于 属性 到 NSRange 的位置 属性。
我特别感兴趣的是如何从 Swift 2.3 -> Swift 3.0
迁移以下代码行if myRange.location != NSNotFound { ... }
myRange 仍然是一个范围 属性 所以编译器告诉我正确的: 类型范围的值没有成员位置
检查空属性是否足够?
if !myRange.isEmpty { ... }
提前致谢
如评论所说,您不会返回 NSNotFound,而是得到一个 nil 范围。
虽然 .location 已替换为 .lowerBound 和 .upperBound,但要回答您的问题。
let s = "The yellow dog is nice"
if let range = s.range(of: "dog")
{
print(s[range.lowerBound...]) //prints "dog is nice"
print(s[range.upperBound...]) //prints " is nice"
print(s[range.lowerBound..<range.upperBound]) //prints "dog"
}