あなたは元の文字列がインデックスを開始するに関連して方法distanceTo(インデックス)を使用する必要があります。
let intValue = letters.startIndex.distanceTo(index)
あなたはまた、として文字列内の文字の最初の発生を返すようにする方法で文字列を拡張することができます従い
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•スウィフト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•スウィフト4
extension String {
func indexDistance(of character: Character) -> Int? {
guard let index = index(of: character) else { return nil }
return distance(from: startIndex, to: index)
}
}
スウィフト4におけるもう一つの可能なアプローチは、インデックス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")
}
をuがXcodeの7.2と迅速2.xのがありますか? – aaisataev
実際、この時点でXcode 7.2をダウンロードしています。 。ユニークな文字列の場合 – Christopher
: 'てみましょうインデックス=文字列(letters.characters.reverse())characters.indexOf(「C」)!distanceTo(letters.endIndex)' – dfri