我正在使用以下代码:
var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)
自从更新到Xcode 7.3(Swift 2.2)之后,我得到了以下提示:
'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中被删除。请使用'..<'运算符。
对我来说,如何正确地使用“..<”运算符进行“翻译”还不清楚。
var continousDigitsRange1:Range<Int> = 0..<0
或者,如果你想更简单一些
var continousDigitsRange = 0..<0
值得注意的是,现在可以使用substringWithRange
方法对字符串进行子字符串截取。
let theString = "Hello, how are you"
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
theString.substringWithRange(range)
(a...b)
定义了一个从 a 到 b 的范围,并包括值 a 和 b。其中,a 的值不能大于 b。(a..<b)
定义了一个从 a 到 b 的范围,但不包括 b。由于它包含第一个值,但不包含最后一个值,因此被称为半开运算符。与封闭范围运算符一样,a 的值也不能大于 b。如果 a 的值等于 b,则生成的范围为空。
Swift 编程语言 (Swift 2.2) - 基本运算符
var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)
--to--
var continousDigitsRange:Range<Int> = 0..<0
展示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)<")
针对 Swift 3.0,以下是一些补充说明:
//可数范围示例。
let range1 = 0..<5
可数闭合范围示例
let range2 = 0...5
//范围从边界开始
let range = Range(uncheckedBounds: (range1.lowerBound,range1.upperBound))
//获取子字符串范围的距离。
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
}
例如:
let greeting = "Hi, my name is Nathaniel"
let getName = greeting[getSubStringRange(fullString: greeting, fromIndex: 15, subStringSize: 9)]
print("Name: \(getName)")
-> 打印:"Name: Nathaniel"
)
。 - VladendIndex
属性中,你忘记了在 startIndex
之前加上 fullString.
,所以正确的写法应该是:let endIndex = fullString.characters.index(fullString.startIndex, offsetBy: subStringSize)
。 - Mette