2016-05-18 9 views
4

これは私をナットにしています。IntをString.CharacterView.Indexに変換する方法

スウィフト2.2では、StringをサブタイトルIntで添削することができません。例:intであり、下付き文字の文字列ことはできませんが、議論

のドキュメンテーションコメントを参照してください。

let myString = "Test string" 
let index = 0 
let firstCharacter = myString[index] 

これは

「添字」は利用できないと言って、コンパイルエラーとなります私が見る1つの回避策は、インデックス型に整数を変換することですが、私はどのように把握することはできません..

+1

スウィフトは突然[のn番目の文字を取得する2.2 ... – nekonari

+2

可能な重複して使用することは本当に難しいとなりましたスウィフトプログラミング言語の文字列](http://stackoverflow.com/questions/24092884/get-nth-character-of-a-string-in-swift-programming-language) – Moritz

+0

それはインデックスを持つ文字列に可能ではなかったですSwiftのInt。 – Sulthan

答えて

6

それは下付きが不可能ではない要するに、これまでと同じ結果を得るにはさらに1歩のステップが必要です。以下は、私はあなたと同じことをやったが、スウィフト2.2

let myString = "Test string" 
let intForIndex = 0 
let index = myString.startIndex.advancedBy(intForIndex) 
let firstCharacter = myString[index] 

スウィフト3.xの/ 4.xできました:

let myString = "Test string" 
let intForIndex = 0 
let index = myString.index(myString.startIndex, offsetBy: intForIndex) 
let firstCharacter = myString[index] 

EDIT 1:

コードが更新され、Intを他の場所で「インデックス」値に渡すことができます。

EDIT 2:

スウィフト3 +スイフト4構文が含まれていました。

extension String { 
    subscript (index: Int) -> Character { 
     let charIndex = self.startIndex.advancedBy(index) 
     return self[charIndex] 
    } 

    subscript (range: Range<Int>) -> String { 
     let startIndex = self.startIndex.advancedBy(range.startIndex) 
     let endIndex = startIndex.advancedBy(range.count) 

     return self[startIndex..<endIndex] 
    } 
} 

// Usage 
let str = "Hello world" 

print(str[0])  // H 
print(str[0..<5]) // Hello 
+0

これはトリックですが、逆に変換するのはどうですか? – nekonari

+0

どういう意味ですか? – ZGski

+0

.Index型を取ってIntに変換します。 – nekonari

5

それはので、私はそれに対処するための拡張を書いた、あまりにも私のうち一体をイライラ
let myString = "Test string" 
let index = 0 
let firstCharacter = myString[String.Index(encodedOffset: index)] 
-1

ZGskiの答えはスウィフト3

let testText = "Test text 123" 
let position = 11 
let index = testText.characters.index(testText.startIndex, offsetBy: position) 
let character = testText[index] // "2" 
0

迅速4の例題を更新:

関連する問題