# String to substring?

**URL:** <https://www.ruby-forum.com/t/string-to-substring/121973>\
**Category:** Ruby\
**Created:** [December 3, 2007, 3:15pm UTC](https://www.ruby-forum.com/t/string-to-substring/121973 "2007-12-03T15:15:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![blitzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/ecae2f/32.png) [@blitzer](https://www.ruby-forum.com/u/blitzer)\
**Post date:** [December 3, 2007, 3:15pm UTC](https://www.ruby-forum.com/t/string-to-substring/121973/1 "2007-12-03T15:15:20Z")

</div>

I have one string name

message = “5x-2=18”

and I want to create substring or array by this

mesArray[0] = 5  
mesArray[1] = x  
mesArray[2] = -  
…

this has function?  
how can I make it?

---

<div class="post-metadata">

**Author:** ![blitzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/ecae2f/32.png) [@blitzer](https://www.ruby-forum.com/u/blitzer)\
**Post date:** [December 3, 2007, 3:18pm UTC](https://www.ruby-forum.com/t/string-to-substring/121973/2 "2007-12-03T15:18:40Z")

</div>

Pat K. wrote:

> I have one string name
> 
> message = “5x-2=18”
> 
> and I want to create substring or array by this
> 
> mesArray[0] = 5  
> mesArray[1] = x  
> mesArray[2] = -  
> …
> 
> this has function?  
> how can I make it?

irb(main):001:0\> mesArray = “5x-2=18”.split “”  
=\> [“5”, “x”, “-”, “2”, “=”, “1”, “8”]

---

<div class="post-metadata">

**Author:** ![blitzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/ecae2f/32.png) [@blitzer](https://www.ruby-forum.com/u/blitzer)\
**Post date:** [December 3, 2007, 3:23pm UTC](https://www.ruby-forum.com/t/string-to-substring/121973/3 "2007-12-03T15:23:42Z")

</div>

2007/12/3, Pat K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> this has function?  
> how can I make it?

You have that already in your String:

irb(main):001:0\> message = “5x-2=18”  
=\> “5x-2=18”  
irb(main):002:0\> message[0].chr  
=\> “5”  
irb(main):003:0\> message[1].chr  
=\> “x”  
irb(main):004:0\> message[2].chr  
=\> “-”

I am suspecting though that what you really want is a parser for  
expressions. A simplistic version could look like this:

irb(main):005:0\> message.scan %r{\d+|\w+|[-+=]}  
=\> [“5”, “x”, “-”, “2”, “=”, “18”]

If you want to properly process expressions with brackets etc. you  
need a more complex solution.

Kind regards

robert

---

<div class="post-metadata">

**Author:** ![blitzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/ecae2f/32.png) [@blitzer](https://www.ruby-forum.com/u/blitzer)\
**Post date:** [December 3, 2007, 3:43pm UTC](https://www.ruby-forum.com/t/string-to-substring/121973/4 "2007-12-03T15:43:33Z")

</div>

thank you robert 😃
