Forum: Ruby How to access individual characters in a string (as strings)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
m4dc4p (Guest)
on 2006-01-06 10:04
(Received via mailing list)
I'm embarrassed to ask such a seeminly simple question, but I can't
figure out how to "easily" get the individual characters/bytes out of a
string as strings. For example:

"abc"[0]
# => 97
"abc"[0..0]
# => "a"

The first form gives me the character as a Fixnum, but I want a string.
The second form gives me what I want but it seems ugly.  Is there a
better way to get at a given character, *as a string* ?

Thanks for any and all help!

Justin
Hal F. (Guest)
on 2006-01-06 10:07
(Received via mailing list)
m4dc4p wrote:
> The second form gives me what I want but it seems ugly.  Is there a
> better way to get at a given character, *as a string* ?

There's no good way. In future Ruby, you'll get strings anyway
instead of Fixnums.

I usually use the [n..n] approach, but you can also do something
like:  str[n].chr   if you like that better.


Hal
unknown (Guest)
on 2006-01-06 11:13
(Received via mailing list)
m4dc4p <removed_email_address@domain.invalid> wrote:

> "abc"[0]
> # => 97

"abc"[0,1] ???
Robert Brook (Guest)
on 2006-01-06 11:13
(Received via mailing list)
What are you doing withe the strings next?

You might want to have a look at StringScanner.
Steve L. (Guest)
on 2006-01-06 16:57
(Received via mailing list)
On Friday 06 January 2006 03:03 am, m4dc4p wrote:
> The second form gives me what I want but it seems ugly.  Is there a
> better way to get at a given character, *as a string* ?
>
> Thanks for any and all help!

Lots of different ways, some of which are enumerated here:

http://www.troubleshooters.com/codecorn/ruby/basic...

and here:

http://www.troubleshooters.cxm/codecorn/ruby/basic...

You can use a lot of the same methods on both Arrays and Strings.

SteveT

Steve L.
http://www.troubleshooters.com
removed_email_address@domain.invalid
Dirk M. (Guest)
on 2006-01-06 18:30
(Received via mailing list)
2006/1/6, Une bévue <removed_email_address@domain.invalid>:
>
> m4dc4p <removed_email_address@domain.invalid> wrote:
>
> > "abc"[0]
> > # => 97
>
> "abc"[0,1] ???


i agree, this looks a lot better to me than "abc"[0..0] does, and i've
always used this.
Christer N. (Guest)
on 2006-01-06 19:38
Just a suggestion:

class String
  def chr(index)
    self[index..index]
  end
end

    s = "Ruby"
    t s.chr(0), "R"
    t s.chr(3), "y"
    t s.chr(4), ""
    t s.chr(-1), "y"
    t s.chr(-4), "R"
    t s.chr(-5), nil

But nothing beats s[0]="R", it's much cleaner.

Christer
This topic is locked and can not be replied to.