2015-05-03 4 views
10

Um einen Teil zu einem bestimmten Bereich zu entfernen, verwenden Sie die removeRange (_ :) Methode zu verstehen:die removeRange (_ :) Dokumentation

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

Auszug aus: Apple Inc. „The Swift Programming Language . "IBooks. https://itun.es/ca/jEUH0.l

Hallo,

verstehe ich nicht vollständig die Syntax und die Funktion der Linie 1 in dem obigen Code.

Bitte erläutern Sie diese Zeichenfolge mit:

let welcome = "hello there" 

Das ist, was ich herausgearbeitet: "Um die Start- und End-Index zu ändern, advance() verwenden"


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

Eine bessere Dokumentation von advance() wird begrüßt. das heißt es ist Argument

Verwenden ..< um eine Reihe zu machen, die

Auszug aus seinem oberen Wert läßt: „Der Swift Programming Language“ Apple Inc. iBooks. https://itun.es/ca/jEUH0.l

welcome.endIndex wird 11

+0

Was ist die Schwierigkeit? Strings haben startIndex und endIndex. Sie müssen sie im Voraus erhöhen/verringern. Ein Bereich ist etwas wie '' ... '' oder 'index' .. <''. –

+0

Mir war nicht bewusst, dass Variablen (oder Konstanten) Bereiche halten können. –

Antwort

14

Swift 2 sein

Wir var seit removeRange Bedürfnisse verwenden werden auf einem wandelbaren Zeichenfolge zu betreiben.

var welcome = "hello there" 

Diese Zeile:

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

bedeutet, dass wir von dem Ende der Schnur (welcome.endIndex) und bewegen sich zurück von 6 Zeichen (vorher durch eine negative Zahl = nach hinten), dann fragen Sie starten der Bereich (..<) zwischen unserer Position und dem Ende der Zeichenfolge (welcome.endIndex).

Erzeugt einen Bereich von 5..<11, der den "dort" Teil der Zeichenfolge umfasst.

Wenn Sie diesen Bereich von Zeichen aus dem String entfernen mit:

welcome.removeRange(range) 

dann wird die Zeichenfolge der verbleibende Teil sein:

print(welcome) // prints "hello" 

Sie können es in die andere Richtung nehmen (von der Startindex der Zeichenkette) für das gleiche Ergebnis:

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

Hier beginnen wir am Anfang des Strings (welcome.startIndex), dann gehen wir um 5 Zeichen vor, dann machen wir einen Bereich (..<) von hier bis zum Ende des Strings (welcome.endIndex).

Hinweis: Die advance Funktion kann vorwärts und rückwärts arbeiten.

Swift 3

Die Syntax geändert hat, aber die Konzepte sind die gleichen.

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" 
Verwandte Themen