文字列の反復処理
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 67/88。
配列と同じように、Rubyの文字列は1文字ずつ反復処理することができます。each_charメソッドを使用すると、文字列内のすべての文字を個別に処理できます。
動作の仕組みは次のとおりです:
word = "Ruby"
word.each_char do |char|
puts char
endこれは各文字を別々の行に出力します:R, u, b, y。ブロック変数 char は、イテレータが文字列内を移動する際に、一度に1文字を保持します。
文字とその位置の両方が必要な場合は、each_char.with_indexを使用します:
word = "Hi"
word.each_char.with_index do |char, index|
puts "#{index}: #{char}"
end次のように出力されます:
0: H
1: iもう一つの便利なメソッドは chars です。これは文字列をその文字の配列に変換します。これにより、これまでに学んだすべての配列メソッドを使用できるようになります:
letters = "abc".chars
puts letters # 出力: a, b, cこれらのメソッドは、テキストを分析したり、特定の文字を数えたり、文字列を1文字ずつ変換したりする必要がある場合に役立ちます。
チャレンジ
簡単文字列(例:hello)を含む1行の入力を読み取ります。
each_char.with_index を使用して文字列を反復処理し、各文字とその位置を出力します。各行は次の形式に従う必要があります:Position 0: h
すべての文字とその位置を出力した後、文字列の総文字数を新しい行に次の形式で出力します:Total characters: 5
例えば、入力が hello の場合、出力は次のようになります:
Position 0: h
Position 1: e
Position 2: l
Position 3: l
Position 4: o
Total characters: 5入力が Ruby の場合、出力は次のようになります:
Position 0: R
Position 1: u
Position 2: b
Position 3: y
Total characters: 4入力が code の場合、出力は次のようになります:
Position 0: c
Position 1: o
Position 2: d
Position 3: e
Total characters: 4入力が A の場合、出力は次のようになります:
Position 0: A
Total characters: 1チートシート
each_char を使用して、文字列内の各文字を反復処理します:
word = "Ruby"
word.each_char do |char|
puts char
endeach_char.with_index を使用して、文字とその位置の両方にアクセスします:
word = "Hi"
word.each_char.with_index do |char, index|
puts "#{index}: #{char}"
endchars を使用して、文字列を文字の配列に変換します:
letters = "abc".chars
puts letters # 出力: a, b, c自分で試してみよう
# 入力を読み込む
str = gets.chomp
# TODO: 以下にコードを記述してください
# each_char.with_index を使用して文字列を反復処理します
# 各文字とその位置を次の形式で出力します: Position X: char
# 文字の総数を次の形式で出力します: Total characters: Xこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。