# How to access individual characters in a string (as strings)

**URL:** <https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720>\
**Category:** Ruby\
**Created:** [January 6, 2006, 9:04am UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720 "2006-01-06T09:04:34Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 9:04am UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/1 "2006-01-06T09:04:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 9:07am UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/2 "2006-01-06T09:07:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 10:13am UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/3 "2006-01-06T10:13:43Z")

</div>

m4dc4p [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> “abc”[0]
> 
> # =\> 97

“abc”[0,1] ???

---

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 10:13am UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/4 "2006-01-06T10:13:43Z")

</div>

What are you doing withe the strings next?

You might want to have a look at StringScanner.

---

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 3:57pm UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/5 "2006-01-06T15:57:08Z")

</div>

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:

> **[Ruby Basic Tutorial](http://www.troubleshooters.com/codecorn/ruby/basictutorial.htm#_Arrays)**
>
> A tutorial on Ruby basics

and here:

[http://www.troubleshooters.cxm/codecorn/ruby/basictutorial.htm#\_Strings](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.

> **[Troubleshooters.Com](http://www.troubleshooters.com)**
>
> The process and mindset of troubleshooting.

removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 5:30pm UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/6 "2006-01-06T17:30:23Z")

</div>

2006/1/6, Une bÃ©vue [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> m4dc4p [removed\_email\_address@domain.invalid](mailto: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.

---

<div class="post-metadata">

**Author:** ![m4dc4p](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ccd318/32.png) [@m4dc4p](https://www.ruby-forum.com/u/m4dc4p)\
**Post date:** [January 6, 2006, 6:38pm UTC](https://www.ruby-forum.com/t/how-to-access-individual-characters-in-a-string-as-strings/51720/7 "2006-01-06T18:38:28Z")

</div>

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
