web-dev-qa-db-ja.com

'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.で削除されます。 '.. <'演算子を使用します。

私にとっては、「.. <」演算子を使用して正しく「翻訳」する方法が明確ではありません。

72
mahega

あなたは単に書くべきです

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

またはもっとシンプルにしたい場合

var continousDigitsRange = 0..<0
88
Scott Thompson

また、注目に値する、substringWithRange St​​ringには、次を使用できます。

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

閉範囲演算子(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
8
solenoid

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、どのように<

2
user462990

文字列の部分文字列範囲を取得する関数は常に持っていました。 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
}

関数は自明です-string(fullString)、サブストリングが始まるそのストリングのインデックス(fromIndex)、およびsubStringの大きさ(subStringSize)を渡します。

例:

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

print("Name: \(getName)")

->プリント:「名前:ナサニエル」

1
Krivvenz

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)

// For Swift 3.0

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