Ответ 1
Вы должны просто написать
var continousDigitsRange1:Range<Int> = 0..<0
или если вы хотите пойти еще проще
var continousDigitsRange = 0..<0
Я использую следующий код:
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
строки String теперь можно использовать
let theString = "Hello, how are you"
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
theString.substringWithRange(range)
Оператор закрытого диапазона
(a...b)
определяет диапазон, который выполняется от на b и включает значения a и b. Значение a не должно быть больше, чем b.Оператор полуоткрытого диапазона
(a..<b)
определяет диапазон, который выполняется от на b, но не включает b. Говорят, что он полуоткрыт, потому что он содержит его первое значение, но не его конечное значение. Как и закрытые оператор диапазона, значение а не должно быть больше, чем 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)<")
это означает, что это средний бит > 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), индекс этой строки, где начинается подстрока (fromIndex) и насколько велик subString (subStringSize).
Пример:
let greeting = "Hi, my name is Nathaniel"
let getName = greeting[getSubStringRange(fullString: greeting, fromIndex: 15, subStringSize: 9)]
print("Name: \(getName)")
- > Печать: "Имя: Натаниэль"