不推荐使用 init (start: end:)) : 它将在 Swift 3中删除。请使用’. . <’操作符

我使用以下代码:

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)

自从升级到 Xcode 7.3(Swift 2.2) ,我得到了以下提示:

不推荐使用 init (start: end:)) : 它将在 Swift 3中删除。使用 “ . . <”操作符。

对我来说,不清楚如何用“ using the’. . <”操作符正确地“翻译”它。

12803 次浏览

你应该直接写

var continousDigitsRange1:Range<Int> = 0..<0

或者你想更简单一点

var continousDigitsRange = 0..<0

闭合范围运算符 (a...b)定义一个从 并且包括值 a 和 b。 a 的值不能是 大于 b。

半开放范围运算符 (a..<b)定义一个从 但不包括 b。据说它是半开放的,因为它 包含它的第一个值,但不包含它的最终值 范围运算符,则 a 的值不能大于 b 值等于 b,则结果范围将为空。

Swift 编程语言(Swift 2.2)-基本运算符

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)
--to--
var continousDigitsRange:Range<Int> = 0..<0

同样值得注意的是,对于 substringWithRange a String,您现在可以使用

let theString = "Hello, how are you"
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
theString.substringWithRange(range)

把 Bmichotte 的回答全部展示出来。

let theString = "Hello, how are you today my friend"
let start = 3
let end = 15
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
let p = theString.substringWithRange(range)
print("this is the middle bit>\(p)<")

这就产生了这个中间位 > lo,怎么样 <

对 Swift 3.0增加了一些要点

//可数范围例子。

let range1 = 0..<5

可数闭合范围例子

let range2 = 0...5

//范围从界限

let range = Range(uncheckedBounds: (range1.lowerBound,range1.upperBound))

//获取到 substringRange 的距离。

let str = "Hello, how are you"
let substringRange = str.characters.indices

//低于 Swift 3.0

let length = substringRange.distance(from: substringRange.startIndex, to: substringRange.endIndex)

//针对 Swift 3.0

let length2 = str.distance(from: substringRange.startIndex, to: substringRange.endIndex)

我一直有一个函数来获取字符串的子字符串范围。以下是我为 Swift 3更新的函数:

func getSubStringRange(fullString: String, fromIndex: Int, subStringSize: Int) -> Range<String.Index> {
let startIndex = fullString.characters.index(fullString.startIndex, offsetBy: fromIndex)
let endIndex = fullString.characters.index(startIndex, offsetBy: subStringSize)


let subStringRange = startIndex..<endIndex


return subStringRange
}

这个函数很容易理解——你传入一个字符串(fullString) ,子字符串开始的地方的索引(from Index) ,以及子字符串有多大(subStringSize)。

例如:

let greeting = "Hi, my name is Nathaniel"
let getName = greeting[getSubStringRange(fullString: greeting, fromIndex: 15, subStringSize: 9)]


print("Name: \(getName)")

- > 指纹: “姓名: 纳撒尼尔”