# How i can to parse string

**URL:** <https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836>\
**Category:** Ruby\
**Created:** [April 26, 2006, 1:36pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836 "2006-04-26T13:36:37Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 1:36pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/1 "2006-04-26T13:36:37Z")

</div>

I have this string:

store[name]=Ilyas store,store[phone]= 4999-233-2923, store[fax]=  
80233923293,store[description]=lkjklsdaj,save=save,cancel=cancel

need with regexp, put it’s in Hash object

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 1:46pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/2 "2006-04-26T13:46:23Z")

</div>

On Apr 26, 2006, at 6:37 AM, Jonh wrote:

> I have this string:
> 
> store[name]=Ilyas store,store[phone]= 4999-233-2923, store[fax]=  
> 80233923293,store[description]=lkjklsdaj,save=save,cancel=cancel
> 
> need with regexp, put it’s in Hash object

What have you tried? Where are you stuck?

Show us your attempts and we will be happy to help you fix them…

James Edward G. II

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 2:12pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/3 "2006-04-26T14:12:40Z")

</div>

Jonh wrote:

> I have this string:
> 
> store[name]=Ilyas store,store[phone]= 4999-233-2923, store[fax]=  
> 80233923293,store[description]=lkjklsdaj,save=save,cancel=cancel
> 
> need with regexp, put it’s in Hash object

That is my version for problem solving.  
I want to simplify it

if params[:param]  
paramater = Hash.new  
for value in params[:param].split(/,/)  
if value =~ /(._)=(._)/  
parameter[$1] = $2  
end  
end  
end  
puts parameter.inspect

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 2:57pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/4 "2006-04-26T14:57:59Z")

</div>

On 4/26/06, James Edward G. II [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > That is my version for problem solving.  
> > puts parameter.inspect  
> > [description]"=\>“lkjklsdaj”, “store[phone]”=\>“4999-233-2923”}  
> > or the slight modification to James’ answer:  
> > irb\> store = Hash[_str.scan(/\S[([^\s,]+)]\s_=\s\*([^,]+)/).flatten]  
> > =\> {“name”=\>“Ilyas store”, “description”=\>“lkjklsdaj”,  
> > “phone”=\>“4999-233-2923”}

Cameron

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 2:39pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/5 "2006-04-26T14:39:09Z")

</div>

On Apr 26, 2006, at 7:12 AM, Jonh wrote:

> if params[:param]  
> paramater = Hash.new  
> for value in params[:param].split(/,/)  
> if value =~ /(._)=(._)/  
> parameter[$1] = $2  
> end  
> end  
> end  
> puts parameter.inspect

Does this help?

> > str = “store[name]=Ilyas store,store[phone]= 4999-233-2923, store  
> > [fax]= 80233923293,store[description]=lkjklsdaj,save=save,cancel=cancel”  
> > =\> “store[name]=Ilyas store,store[phone]= 4999-233-2923, store[fax]=  
> > 80233923293,store[description]=lkjklsdaj,save=save,cancel=cancel”
> 
> > Hash[_str.scan(/([^\s,]+)\s_=\s\*([^,]+)/).flatten]  
> > =\> {“cancel”=\>“cancel”, “store[fax]”=\>“80233923293”, “store  
> > [name]”=\>“Ilyas store”, “save”=\>“save”, “store  
> > [description]”=\>“lkjklsdaj”, “store[phone]”=\>“4999-233-2923”}

James Edward G. II

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 3:04pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/6 "2006-04-26T15:04:16Z")

</div>

Hi –

On Wed, 26 Apr 2006, Cameron McBride wrote:

> > > end  
> > > [name]"=\>“Ilyas store”, “save”=\>“save”, “store  
> > > [description]”=\>“lkjklsdaj”, “store[phone]”=\>“4999-233-2923”}
> 
> or the slight modification to James’ answer:  
> irb\> store = Hash[_str.scan(/\S[([^\s,]+)]\s_=\s\*([^,]+)/).flatten]  
> =\> {“name”=\>“Ilyas store”, “description”=\>“lkjklsdaj”, “phone”=\>“4999-233-2923”}

But… but… neither of you guys’s version gives the same result as  
Jonh’s 🙂

I think this does:

Hash[\*str.scan(/([^,]+)=([^,]+)/).flatten]

David

–  
David A. Black (removed\_email\_address@domain.invalid)  
Ruby Power and Light, LLC ([http://www.rubypowerandlight.com](http://www.rubypowerandlight.com))

“Ruby for Rails” PDF now on sale! [Ruby for Rails](http://www.manning.com/black)  
Paper version coming in early May!

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 3:13pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/7 "2006-04-26T15:13:44Z")

</div>

On Apr 26, 2006, at 8:02 AM, removed\_email\_address@domain.invalid wrote:

> > > > > store[name]=Ilyas store,store[phone]= 4999-233-2923, store[fax]=  
> > > > > if value =~ /(._)=(._)/  
> > > > > =lkjklsdaj,save=save,cancel=cancel"  
> > > > > “phone”=\>“4999-233-2923”}
> 
> But… but… neither of you guys’s version gives the same result as  
> Jonh’s 🙂
> 
> I think this does:
> 
> Hash[\*str.scan(/([^,]+)=([^,]+)/).flatten]

We decided he didn’t really want those spaces. We’re always forcing  
our opinions on others. Luckily, David is nice than we are. 😉

James Edward G. II

---

<div class="post-metadata">

**Author:** ![Jonh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dec6dc/32.png) [@Jonh](https://www.ruby-forum.com/u/Jonh)\
**Post date:** [April 26, 2006, 3:07pm UTC](https://www.ruby-forum.com/t/how-i-can-to-parse-string/58836/8 "2006-04-26T15:07:26Z")

</div>

On Apr 26, 2006, at 7:56 AM, Cameron McBride wrote:

> > > end  
> > > =\> {“cancel”=\>“cancel”, “store[fax]”=\>“80233923293”, “store  
> > > [name]”=\>“Ilyas store”, “save”=\>“save”, “store  
> > > [description]”=\>“lkjklsdaj”, “store[phone]”=\>“4999-233-2923”}
> 
> or the slight modification to James’ answer:  
> irb\> store = Hash[_str.scan(/\S[([^\s,]+)]\s_=\s\*([^,]+)/).flatten]  
> =\> {“name”=\>“Ilyas store”, “description”=\>“lkjklsdaj”,  
> “phone”=\>“4999-233-2923”}

I was going to do that too, until I realized that it lost  
fields. 😉 I imagine they aren’t needed though and your way is much  
better.

James Edward G. II
