Menu
Coddy logo textTech

文字列の反復処理 P2

CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 72/86。

配列でインデックスと要素の両方を取得するために enumerated() を使用したのと同様に、文字列でも同じことができます。これは、反復処理中に各文字の位置を知る必要がある場合に便利です。

let word = "Swift"

for (index, char) in word.enumerated() {
    print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: t

このテクニックは、文字の位置に基づいて新しい文字列を作成する際に役立ちます。例えば、偶数インデックスの文字だけを保持したい場合などです:

let text = "abcdef"
var result = ""

for (index, char) in text.enumerated() {
    if index % 2 == 0 {
        result += String(char)
    }
}

print(result)  // ace

追加する前に、String(char) を使用して charString に変換していることに注目してください。これは、resultString であり、+= 演算子を使用して Character を直接追加することはできないため、必要になります。

challenge icon

チャレンジ

簡単

textを受け取り、奇数インデックスの文字のみを含む新しい文字列を返す関数extractOddIndexCharsを作成してください。

enumerated()を使用して文字列を反復処理し、インデックスが奇数(1、3、5など)である文字を含む結果を構築してください。

パラメータ:

  • text (String): 処理する入力文字列

戻り値: 奇数インデックスの文字のみを含む文字列 (String)

例: text"abcdefg"の場合、関数は"bdf"(インデックス1、3、5の文字)を返す必要があります。

チートシート

enumerated() を文字列で使用すると、反復処理中にインデックスと文字の両方を取得できます。

let word = "Swift"

for (index, char) in word.enumerated() {
    print("\(index): \(char)")
}
// 0: S
// 1: w
// 2: i
// 3: f
// 4: t

文字の位置に基づいて文字列を構築する場合、追加する前に CharacterString に変換します。

let text = "abcdef"
var result = ""

for (index, char) in text.enumerated() {
    if index % 2 == 0 {
        result += String(char)
    }
}

print(result)  // ace

+= で追加するときに CharacterString に変換するには、String(char) を使用します。

自分で試してみよう

func extractOddIndexChars(text: String) -> String {
    // ここにコードを記述してください
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン