J’utilise le code suivant:
var continousDigitsRange:Range = Range(start: 0, end: 0)
Depuis la mise à jour vers Xcode 7.3 (Swift 2.2), j’ai eu le conseil suivant:
‘init (start: end :)’ est obsolète: il sera supprimé dans Swift 3. Utilisez l’opérateur ‘.. <'.
Pour moi, il n’est pas clair comment le “traduire” correctement avec “en utilisant l’opérateur” .. <".
Vous devriez simplement écrire
var continousDigitsRange1:Range = 0..<0
ou si vous voulez aller encore plus simple
var continousDigitsRange = 0..<0
À noter aussi, à subssortingngWithRange
une Ssortingng, vous pouvez maintenant utiliser
let theSsortingng = "Hello, how are you" let range = theSsortingng.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end) theString.substringWithRange(range)
L’opérateur d’intervalle fermé
(a...b)
définit une plage allant de a à b et inclut les valeurs a et b. La valeur de a ne doit pas être supérieure à b.L’opérateur de plage semi-ouvert
(a.. définit une plage allant de a à b, mais n'inclut pas b. On dit qu'il est à moitié ouvert car il contient sa première valeur, mais pas sa valeur finale. Comme avec l'opérateur d'intervalle fermé, la valeur de a ne doit pas être supérieure à b. Si la valeur de a est égale à b, la plage résultante sera vide.
Le langage de programmation rapide (Swift 2.2) - Opérateurs de base
var continousDigitsRange:Range = Range (start: 0, end: 0) --to-- var continousDigitsRange:Range = 0..<0
pour montrer la réponse de bmichotte en entier …
let theSsortingng = "Hello, how are you today my friend" let start = 3 let end = 15 let range = theSsortingng.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end) let p = theString.substringWithRange(range) print("this is the middle bit>\(p)<")
cela produit ceci est le bit du milieu> lo, comment sont <
Ajout de quelques points en référence à swift 3.0
// Exemple de plage dénombrable.
let range1 = 0..<5
Exemple de plage fermée dénombrable
let range2 = 0...5
// Portée des bornes
let range = Range(uncheckedBounds: (range1.lowerBound,range1.upperBound))
// Pour obtenir la distance de subssortingngRange.
let str = "Hello, how are you" let subssortingngRange = str.characters.indices
// Au-dessous de Swift 3.0
let length = subssortingngRange.distance(from: subssortingngRange.startIndex, to: subssortingngRange.endIndex)
// Pour Swift 3.0
let length2 = str.distance(from: subssortingngRange.startIndex, to: subssortingngRange.endIndex)
J’ai toujours eu une fonction pour obtenir l’intervalle de sous-chaîne d’une chaîne. Voici ma fonction mise à jour pour Swift 3:
func getSubSsortingngRange(fullSsortingng: Ssortingng, fromIndex: Int, subSsortingngSize: Int) -> Range { let startIndex = fullSsortingng.characters.index(fullSsortingng.startIndex, offsetBy: fromIndex) let endIndex = fullSsortingng.characters.index(startIndex, offsetBy: subSsortingngSize) let subSsortingngRange = startIndex..
La fonction est assez explicite - Vous passez une chaîne (fullSsortingng), l'index de cette chaîne où la sous-chaîne commence (fromIndex) et la taille de la sous-chaîne (subSsortingngSize).
Exemple:
let greeting = "Hi, my name is Nathaniel" let getName = greeting[getSubSsortingngRange(fullSsortingng: greeting, fromIndex: 15, subSsortingngSize: 9)] print("Name: \(getName)")
-> Tirages: "Nom: Nathaniel"