Iterate chars in a string

shinya [mailto:piccionevolante@libero.it]:

#I'm a ruby newbie, and I'm searching for a way to iterate
#every char in
#a string, but I cannot find any easy way. My problem is to
#look at every
#char in a string and match it with some known letter.
#I use the String#each_byte iterator for now, but it still be a poor
#solution :confused:

me too, i use each_byte

irb(main):098:0> "test".each_byte{|b| puts(b.to_s+" -> "+b.chr) }
116 -> t
101 -> e
115 -> s
116 -> t
=> "test"

i like each_byte when i access like C or raw..

maybe you want something like #each_char

cat a1.rb

x="test\ntest2"

class String
    def each_char
        each_byte do |b|
            yield b.chr
        end
    end
end

x.each_char {|c| puts c}

ruby a1.rb

t
e
s
t

t
e
s
t
2

hth.
kind regards -botp

Careful, a character isn't necessarily a byte in length. You gotta be aware of $KCODE.

···

On Dec 20, 2005, at 5:29 AM, Peña, Botp wrote:

shinya [mailto:piccionevolante@libero.it]:

#I'm a ruby newbie, and I'm searching for a way to iterate
#every char in
#a string, but I cannot find any easy way. My problem is to
#look at every
#char in a string and match it with some known letter.
#I use the String#each_byte iterator for now, but it still be a poor
#solution :confused:

me too, i use each_byte

irb(main):098:0> "test".each_byte{|b| puts(b.to_s+" -> "+b.chr) }
116 -> t
101 -> e
115 -> s
116 -> t
=> "test"

i like each_byte when i access like C or raw..

maybe you want something like #each_char

>cat a1.rb
x="test\ntest2"

class String
    def each_char
        each_byte do |b|
            yield b.chr
        end
    end
end

x.each_char {|c| puts c}

>ruby a1.rb
t
e
s
t

t
e
s
t
2

hth.
kind regards -botp