文字列の反復処理 P1
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 71/86。
配列と同じように、Swiftの文字列は文字のシーケンスであり、反復処理が可能です。これにより、おなじみの for-in ループを使用して、テキストを1文字ずつ処理することが容易になります。
文字列をループで処理すると、Swiftは各文字を順番に取り出します:
let word = "Hello"
for char in word {
print(char)
}
// H
// e
// l
// l
// oループ内の各 char は String ではなく Character 型です。この違いは、個々の文字を比較したり操作したりする必要がある場合に重要になります。
この手法を使用して、特定の文字をカウントするなど、テキストを分析することができます。
let message = "banana"
var countA = 0
for char in message {
if char == "a" {
countA += 1
}
}
print(countA) // 3文字を比較する際、"a"のように引用符で囲まれた1文字を使用することに注目してください。Swiftは、別の文字と比較するときに、これを自動的にCharacterとして扱います。
チャレンジ
簡単text を受け取り、その文字列に含まれる母音の総数を返す関数 countVowels を作成してください。
文字列内の各文字を順番に確認し、母音(a, e, i, o, u)がいくつあるかカウントします。小文字と大文字の両方の母音をカウントしてください。
パラメータ:
text(String): 解析する文字列
戻り値: 文字列内で見つかった母音の総数 (Int)
例: text が "Hello World" の場合、関数は 3 を返す必要があります(母音は e, o, o です)。
チートシート
for-inループを使用して文字列を反復処理し、各文字を処理できます:
let word = "Hello"
for char in word {
print(char)
}
// H
// e
// l
// l
// oループ内の各charは、StringではなくCharacter型です。
条件式で文字を直接比較できます:
let message = "banana"
var countA = 0
for char in message {
if char == "a" {
countA += 1
}
}
print(countA) // 3自分で試してみよう
func countVowels(text: String) -> Int {
// ここにコードを記述してください
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。