m4dc4p
January 6, 2006, 9:04am
1
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
m4dc4p
January 6, 2006, 9:07am
2
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
m4dc4p
January 6, 2006, 10:13am
3
m4dc4p [email protected] wrote:
“abc”[0]
=> 97
“abc”[0,1] ???
m4dc4p
January 6, 2006, 10:13am
4
What are you doing withe the strings next?
You might want to have a look at StringScanner.
m4dc4p
January 6, 2006, 3:57pm
5
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:
and here:
http://www.troubleshooters.cxm/codecorn/ruby/basictutorial.htm#_Strings
You can use a lot of the same methods on both Arrays and Strings.
SteveT
Steve L.
[email protected]
m4dc4p
January 6, 2006, 5:30pm
6
2006/1/6, Une bévue [email protected] :
m4dc4p [email protected] 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.
m4dc4p
January 6, 2006, 6:38pm
7
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