web-dev-qa-db-ja.com

Ruby 1.8.6(each_char)の文字列の各文字を反復処理する

Rubyが初めてで、現在、Rubyの基本文字列とは別に各文字を操作しようとしています。Ruby 1.8.6を使用して、次のようなことを行います:

"ABCDEFG".each_char do |i|
  puts i
end

これにより、未定義のメソッド「each_char」エラーが生成されます。

私は次の垂直出力を見ることを期待していました。

A
B
C
D
..etc

それは each_char 1.9に対してのみ定義されたメソッド?プレーンなeachメソッドを使用してみましたが、ブロックは単に文字列全体を1行で出力します。私がこれを行う方法を考える唯一の方法は、かなり不便ですが、最初から文字の配列を作成することです:

['A','B','C','D','...'].each do|i|
  puts i
end

これにより、目的のものが出力されます。

A
B
C
..etc

おそらく、変更されていない文字列を使用してこの出力を実現する方法はありますか?

Java同等のものは:

for (int i = 0; i < aString.length(); i++){
  char currentChar = aString.charAt(i);
  System.out.println(currentChar);
}
83
denchr

1.8.6には本当に問題があります。そして、このエディションの後は大丈夫です

1.8.6では、これを追加できます。

requre 'jcode'
1
kaka2008

しかし、今ではもっと多くのことができます:

a = "cruel world"

a.scan(/\w+/)        #=> ["cruel", "world"]

a.scan(/.../)        #=> ["cru", "el ", "wor"]

a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]

a.scan(/(..)(..)/)   #=> [["cr", "ue"], ["l ", "wo"]]
1
G.B