è necessario utilizzare il metodo distanceTo (indice) rispetto alla stringa originale inizio index:
let intValue = letters.startIndex.distanceTo(index)
è anche possibile estendere String con un metodo per restituire la prima occorrenza di un carattere in una stringa seguire:
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)
}
}
Un altro possibile approccio a Swift 4 è quello di restituire l'indice encodedOffset
:
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")
}
fonte
2015-12-31 02:46:11
do u hanno Xcode 7.2 e veloce 2.x? – aaisataev
In realtà, sto scaricando Xcode 7.2 proprio in questo momento. – Christopher
Per la stringa di caratteri univoci: 'let index = String (letters.characters.reverse()). Characters.indexOf (" c ") !. distanceTo (letters.endIndex)' – dfri