Sie müssen die Methode DistanceTo (Index) in Bezug auf die ursprüngliche Zeichenfolge verwenden, starten Index:
let intValue = letters.startIndex.distanceTo(index)
Sie können auch String erweitern mit einem Verfahren nach dem ersten Vorkommen eines Zeichens in einem String zurück als folgen:
extension String {
func indexDistanceOfFirst(character character: Character) -> Int? {
guard let index = characters.indexOf(character) else { return nil }
return startIndex.distanceTo(index)
}
}
let letters = "abcdefg"
let char: Character = "c"
if let index = letters.indexDistanceOfFirst(character: char) {
print("character \(char) was found at position #\(index)") // "character c was found at position #2\n"
} else {
print("character \(char) was not found")
}
Xcode 8 • Swift 3
extension String {
func indexDistance(of character: Character) -> Int? {
guard let index = characters.index(of: character) else { return nil }
return distance(from: startIndex, to: index)
}
}
let letters = "abcdefg"
let char: Character = "c"
if let index = letters.indexDistance(of: char) {
print("character \(char) was found at position #\(index)") // "character c was found at position #2\n"
} else {
print("character \(char) was not found")
}
Xcode 9 • Swift 4
extension String {
func indexDistance(of character: Character) -> Int? {
guard let index = index(of: character) else { return nil }
return distance(from: startIndex, to: index)
}
}
Ein anderer möglicher Ansatz in Swift 4 ist der Index encodedOffset
zurückzukehren:
extension String {
func encodedOffset(of character: Character) -> Int? {
return index(of: character)?.encodedOffset
}
func encodedOffset(of string: String) -> Int? {
return range(of: string)?.lowerBound.encodedOffset
}
}
let letters = "abcdefg"
let char: Character = "c"
if let index = letters.encodedOffset(of: char) {
print("character \(char) was found at position #\(index)") // "character c was found at position #2\n"
} else {
print("character \(char) was not found")
}
do u haben Xcode 7.2 und schnelle 2.x? – aaisataev
Eigentlich lade ich gerade Xcode 7.2 herunter. – Christopher
Für eindeutige Zeichen string: 'let index = Zeichenfolge (letters.characters.reverse()). Characters.indexOf (" c ")! DistanceTo (letters.endIndex)' – dfri