Question: I am new to ruby and currently trying to operate on each character separately from a base String in ruby. I am using ruby 1.8.6 and would like to do something like:

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

```

This produces a undefined method `each\_char' error.

I was expecting to see a vertical output of:

```
A
B
C
D
..etc

```

Is the `each_char` method defined only for 1.9? I tried using the plain `each` method, but the block simply ouputs the entire string in one line. The only way I figure how to do this, which is rather inconvenient is to create an array of characters from the begining:

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

```

This outputs the desired:

```
A
B
C
..etc

```

Is there perhaps a way to achive this output using an unmodified string to begin with?

I think the Java equivalent is:

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

```

Answer: 
I have the same problem. I usually resort to `String#split`:

```
"ABCDEFG".split("").each do |i|
  puts i
end

```

I guess you could also implement it yourself like this:

```
class String
  def each_char
    self.split("").each { |i| yield i }
  end
end

```

**Edit:** yet another alternative is `String#each_byte`, available in Ruby 1.8.6, which returns the ASCII value of each char in an ASCII string:

```
"ABCDEFG".each_byte do |i|
  puts i.chr # Fixnum#chr converts any number to the ASCII char it represents
end

```
Extending la\_f0ka's comment, esp. if you also need the index position in your code, you should be able to do

```
s = 'ABCDEFG'
for pos in 0...s.length
    puts s[pos].chr
end

```

The `.chr` is important as Ruby < 1.9 [returns the code of the character at that position](http://www.ruby-doc.org/core-1.8.6/String.html#method-i-5B-5D) instead of [a substring of one character at that position](http://www.ruby-doc.org/core-1.9.1/String.html#method-i-5B-5D).