accessing each character of a string

B

Boris Glawe

Hi,

my problem is obviously very basic, but how to I acces for example the third
character of the string "hello" ??

The [] method does not behave as expected, the each method returns the whole
string, the methods of Enumerable mixin don't help me...

This can't be that hard to solve!?

thanks Boris
 
A

Assaph Mehr

Boris said:
Hi,

my problem is obviously very basic, but how to I acces for example the third
character of the string "hello" ??

The [] method does not behave as expected, the each method returns the whole
string, the methods of Enumerable mixin don't help me...

This can't be that hard to solve!?

thanks Boris

Just convert the Fixnum into a character:

irb(main):005:0> s = 'hello'
=> "hello"
irb(main):006:0> s[2]
=> 108
irb(main):007:0> s[2].chr
=> "l"
From the docs:

--------------------------------------------------------------
String#[]
str[fixnum] => fixnum or nil
str[fixnum, fixnum] => new_str or nil
str[range] => new_str or nil
str[regexp] => new_str or nil
str[regexp, fixnum] => new_str or nil
str[other_str] => new_str or nil
str.slice(fixnum) => fixnum or nil
str.slice(fixnum, fixnum) => new_str or nil
str.slice(range) => new_str or nil
str.slice(regexp) => new_str or nil
str.slice(regexp, fixnum) => new_str or nil
str.slice(other_str) => new_str or nil
------------------------------------------------------------------------
Element Reference---If passed a single +Fixnum+, returns the code
of the character at that position. If passed two +Fixnum+ objects,
returns a substring starting at the offset given by the first, and
a length given by the second. If given a range, a substring
containing characters at offsets given by the range is returned.
In
all three cases, if an offset is negative, it is counted from the
end of _str_. Returns +nil+ if the initial offset falls outside
the
string, the length is negative, or the beginning of the range is
greater than the end.

If a +Regexp+ is supplied, the matching portion of _str_ is
returned. If a numeric parameter follows the regular expression,
that component of the +MatchData+ is returned instead. If a
+String+ is given, that string is returned if it occurs in _str_.
In both cases, +nil+ is returned if there is no match.

a = "hello there"
a[1] #=> 101
a[1,3] #=> "ell"
a[1..3] #=> "ell"
a[-3,2] #=> "er"
a[-4..-2] #=> "her"
a[12..-1] #=> nil
a[-2..-4] #=> ""
a[/[aeiou](.)\1/] #=> "ell"
a[/[aeiou](.)\1/, 0] #=> "ell"
a[/[aeiou](.)\1/, 1] #=> "l"
a[/[aeiou](.)\1/, 2] #=> nil
a["lo"] #=> "lo"
a["bye"] #=> nil
 
G

Gavin Kistner

my problem is obviously very basic, but how to I acces for example
the third character of the string "hello" ??

puts "hello"[2] #=> 108
puts "hello"[2..2] #=> "l"
 
B

Brian Schröder

Hi,
=20
my problem is obviously very basic, but how to I acces for example the th= ird
character of the string "hello" ??
=20
The [] method does not behave as expected, the each method returns the wh= ole
string, the methods of Enumerable mixin don't help me...
=20
This can't be that hard to solve!?
=20
thanks Boris
=20

hello[2,1] =3D> 'l'

regards,

Brian


--=20
http://ruby.brian-schroeder.de/

Stringed instrument chords: http://chordlist.brian-schroeder.de/
 
B

Boris Glawe

Assaph said:
Boris said:
Hi,

my problem is obviously very basic, but how to I acces for example

the third
character of the string "hello" ??

The [] method does not behave as expected, the each method returns

the whole
string, the methods of Enumerable mixin don't help me...

This can't be that hard to solve!?

thanks Boris


Just convert the Fixnum into a character:

irb(main):005:0> s = 'hello'
=> "hello"
irb(main):006:0> s[2]
=> 108
irb(main):007:0> s[2].chr
=> "l"


thanks that's as smooth as I expected it from ruby :)
Solutions like string[2..2], as they are shown in the documentation, are not
very nice!

greets Boris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top