Re: String.each
- From: "Robert Dober" <robert.dober@xxxxxxxxx>
- Date: Sat, 3 Mar 2007 18:46:52 +0900
On 3/3/07, Robert Klemme <shortcutter@xxxxxxxxxxxxxx> wrote:
On 03.03.2007 09:00, Robert Dober wrote:Thx Robert,
> On 3/3/07, ara.t.howard@xxxxxxxx <ara.t.howard@xxxxxxxx> wrote:
>> On Sat, 3 Mar 2007, Yannick Grams wrote:
>>
>> > Hello all!
>> >
>> > I'm fairly new to Ruby, and I'm trying to write a program that looks at
>> > each character of a string and then processes it using a block. I've
>> > been using:
>> >
>> > String.each do
>> > #block
>> > end
>> >
>> > but something isn't working. I'm sure that there is a simple answer,
>> but
>> > I'm not that experienced with the language. If someone could please
>> help
>> > me out, I'd greatly appreciate it.
>> >
>> > --
>> > Posted via http://www.ruby-forum.com/.
>>
>> harp: ~> ri String#each
>> ------------------------------------------------------------ String#each
>> str.each(separator=$/) {|substr| block } => str
>> str.each_line(separator=$/) {|substr| block } => str
>> ------------------------------------------------------------------------
>> Splits _str_ using the supplied parameter as the record separator
>> (+$/+ by default), passing each substring in turn to the supplied
>> block. If a zero-length record separator is supplied, the string is
>> split on +\n+ characters, except that multiple successive newlines
>> are appended together.
>>
>> print "Example one\n"
>> "hello\nworld".each {|s| p s}
>> print "Example two\n"
>> "hello\nworld".each('l') {|s| p s}
>> print "Example three\n"
>> "hello\n\n\nworld".each('') {|s| p s}
>>
>> _produces:_
>>
>> Example one
>> "hello\n"
>> "world"
>> Example two
>> "hel"
>> "l"
>> "o\nworl"
>> "d"
>> Example three
>> "hello\n\n\n"
>> "world"
>>
>>
>> harp:~ > ruby -e' puts String.instance_methods.grep(/each/) '
>> each
>> each_with_index
>> each_line
>> each_byte
>>
>>
>> harp:~ > ruby -e' "foobar".each_byte{|b| p b} '
>> 102
>> 111
>> 111
>> 98
>> 97
>> 114
>>
>>
>> harp:~ > ruby -e' "foobar".each_byte{|b| p b.chr} '
>> "f"
>> "o"
>> "o"
>> "b"
>> "a"
>> "r"
>>
>>
>> -a
>> --
>> be kind whenever possible... it is always possible.
>> - the dalai lama
>>
>>
>
> I'd like to add two remarks
> (1) ruby -e' "foobar".split("").each{|b| p b} '
> and
> (2) I feel it is a pity that
> s.each("") is not the same as s.split("").each
> and
Yeah, String's enumeration is a bit weird and inconsistent. Using a
String as array of lines does have it's uses at times but I wonder
whether changing #each to return characters would be more useful (apart
from breaking existing code).
> (3)
> "foobar".to_a does not deliver "foobar".split(""). The Arrayness of
> String might even indicate that String#to_a return an array of bytes
> as delivered by #[index]?
> Note that the easiest way to do this ( which I found ) was
>
> x=[]; each_byte{ |b| x << b}; x
There's also
irb(main):014:0> require 'enumerator'
=> true
irb(main):015:0> "foobar".to_enum(:each_byte).to_a
=> [102, 111, 111, 98, 97, 114]
when will I ever know the whole Standard API???
Robert
Kind regards
robert
--
We have not succeeded in answering all of our questions.
In fact, in some ways, we are more confused than ever.
But we feel we are confused on a higher level and about more important things.
-Anonymous
.
- Follow-Ups:
- Re: String.each
- From: Robert Klemme
- Re: String.each
- References:
- String.each
- From: Yannick Grams
- Re: String.each
- From: ara . t . howard
- Re: String.each
- From: Robert Dober
- Re: String.each
- From: Robert Klemme
- String.each
- Prev by Date: Re: String.each
- Next by Date: Re: File Question
- Previous by thread: Re: String.each
- Next by thread: Re: String.each
- Index(es):
Relevant Pages
|