2015-05-03 22 views
10

Per rimuovere una stringa in un intervallo specificato, utilizzare il removeRange (_ :) metodo:Comprendere la removeRange (_ :) documentazione

1 let range = advance(welcome.endIndex, -6)..<welcome.endIndex 
2 welcome.removeRange(range) 
3 println(welcome) 
4 // prints "hello" 

Estratto da: Apple Inc. “La Swift Programming Language . "IBooks. https://itun.es/ca/jEUH0.l

Hi there,

io non comprendere appieno la sintassi e la funzione della linea 1 del codice di cui sopra.

Si prega di spiegare con questa stringa:

let welcome = "hello there" 

Questo è quello che ho lavorato fuori: "Per cambiare l'indice di inizio e di fine, utilizzare advance()"


Da: https://stackoverflow.com/a/24045156/4839671

Una migliore documentazione di advance() è accolto favorevolmente. vale a dire che è argomenti

Utilizzare ..< di fare una serie che omette il suo valore superiore

Estratto da: “La Swift linguaggio di programmazione” Apple Inc. iBook. https://itun.es/ca/jEUH0.l

welcome.endIndex sarà 11

+0

Qual è la difficoltà? Le stringhe hanno startIndex e endIndex. È necessario aumentarli/diminuirli via anticipo. Un intervallo è qualcosa come '' ... '' o 'index' .. <''. –

+0

Non sapevo che le variabili (o le costanti) possono contenere intervalli. –

risposta

14

Swift 2

Abbiamo intenzione di utilizzare var dal removeRange necessità di operare su una stringa mutabile.

var welcome = "hello there" 

Questa riga:

let range = welcome.endIndex.advancedBy(-6)..<welcome.endIndex 

significa che si parte dalla fine della stringa (welcome.endIndex) e tornare da 6 caratteri (avanzamento da un numero negativo = spostare indietro), quindi chiedere il range (..<) tra la nostra posizione e la fine della stringa (welcome.endIndex).

Crea un intervallo di 5..<11, che comprende lo "là" parte della stringa.

Se si rimuove questo gamma di personaggi dalla stringa con:

welcome.removeRange(range) 

quindi la stringa sarà la parte restante:

print(welcome) // prints "hello" 

si può prendere l'altro modo (da l'indice iniziale della stringa) per lo stesso risultato:

welcome = "hello there" 
let otherRange = welcome.startIndex.advancedBy(5)..<welcome.endIndex 
welcome.removeRange(otherRange) 
print(welcome) // prints "hello" 

Qui iniziamo dall'inizio della stringa (welcome.startIndex), quindi avanziamo di 5 caratteri, quindi facciamo un intervallo (..<) da qui alla fine della stringa (welcome.endIndex).

Nota: la funzione advance può funzionare in avanti e indietro.

Swift 3

La sintassi è cambiato, ma i concetti sono gli stessi.

var welcome = "hello there" 
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex 
welcome.removeSubrange(range) 
print(welcome) // prints "hello" 

welcome = "hello there" 
let otherRange = welcome.index(welcome.startIndex, offsetBy: 5)..<welcome.endIndex 
welcome.removeSubrange(otherRange) 
print(welcome) // prints "hello"