2016-11-09 5 views
-4

hier ist ein Teil meines Codes: - '! String'String und Index in Swift 3

let separator = anyWord.indexOf("-")! 
if (separator >= 0) { 
let res = anyWord[anyWord.characters.index(after: separator)..<anyWord.endIndex] //get an error 
//some code 
} 

ich einen Fehler in 'lassen res' Teil Typ keine Index Mitglieder

hat, wenn ich tun:

let separator = anyWord.indexOf("-")! 
let subStartIndex = anyWord.characters.index(after: separator) 

die Erweiterung String:

extension String { 
    public func indexOf(_ char: Character) -> Int! { 
     if let idx = self.characters.index(of: char) { 
      return self.characters.distance(from: self.startIndex, to: idx) 
     } 
     return Const.INVALID_VALUE 
    } 

ich Fehler:

String nicht mit ‚Int indiziert werden“ es hat variable Größenelemente

+2

Hat [meine Lösung] (http://stackoverflow.com/a/40484399/2976878) nicht zu Ihrer vorherigen Frage funktioniert? Warum haben Sie auch eine Erweiterung definiert, die einen 'Int'-Index für einen' String' zurückgibt? 'Zeichenketten sind mit' String.Index' indiziert. – Hamish

+0

@Hamish Entschuldigung, all diese Swift-Sachen sind neu für mich, und swift 3 hat ein Chaos in meinem Kopf verursacht – user2976267

Antwort

2

Sie zu kompliziert denken, es in Swift recht einfach sind 3 range(of und upperBound mit

let anyWord = "asdghf-fkgjh" 
if let separator = anyWord.range(of:"-") { 
    let res = anyWord.substring(from: separator.upperBound) 
    //some code 
} 
+0

Vielen Dank! Es ist mein Code wurde automatisch von Swift 2 konvertiert und ich kann nicht einfach eine so grundlegende Sache wie eine Dokumentation für eine String-Klasse finden. – user2976267

+0

Klicken Sie auf 'String', um die Dokumentation – vadian

+0

zu erhalten! kannst du mir mehr erzählen: Ich habe self.outStr = self.outStr + self.inString.substring (von: self.j) in Swift 3, aber self. j ist ein Int! und nicht String.Index – user2976267

0

Wirf ihn zu bespannen

let test: String 
test = "Test-Word" 
if let separatorWord = anyWord.range(of: "-") 
{ 
let word = anyWord.substring(from: anyWord.index(after: 
separatorWord.lowerBound)) 
print(word) 
} 
0

ich 'reine' rasche Lösung gefällt (kein Foundation erforderlich)

let anyWord = "asdghf-fkgjh-blablabla--bla" 
anyWord.characters.split(separator: "-").forEach { print(String($0)) } 

druckt

asdghf 
fkgjh 
blablabla 
bla