Re: splitting string to hash
- From: Brian Nice <bnice_99@xxxxxxxxx>
- Date: Fri, 1 Sep 2006 03:49:23 +0900
William Crawford wrote:
Brian Nice wrote:
I have a strings like the following:
s1- "[1] Hello [2] bye"
s2- "[1] Hello [2] bye [2:1] continue [2] more"
I want to convert them to hashes like
h1- {1 => "Hello", 2 => "bye"}
h2- {1 => "Hello", 2 => "bye", "2:1" => "continue", "2:2" => more"}
Is there an easy Ruby way to do this?
Thanks for the help
Brian
Assuming that James is correct in that :2 is missing from the second
string, this works:
h2 = Hash[*s2.scan(/\[([^\[\]]+)\] (\w+)/).flatten]
(I'm starting to really like Ruby.)
In case that's not clear, scan uses a regex to provide an array of
2-element arrays from the text. Then flatten makes it into a single
array, then the * turns it into a list of just values, instead of an
array. Then Hash[] turns each 2 values into a hash.
Actually the original was correct - the second 2 should have a key of
2:2 even though it only appears in the original string as 2 (since it
follows a 2:1, it is assumed that any number after it would be 2:x. If
there was a 3:1 sometime later, then the next two would have a key of
3:2)
s2- "[1] Hello [2] bye [2:1] continue [2] more"
Thanks for the help
Brian
--
Posted via http://www.ruby-forum.com/.
.
- References:
- splitting string to hash
- From: Brian Nice
- Re: splitting string to hash
- From: William Crawford
- splitting string to hash
- Prev by Date: Re: Rubyists of Second Life Meeting | 08/31/2006 and 09/07/2006
- Next by Date: Re: One-Click Ruby Installer for Windows 1.8.5-21 released
- Previous by thread: Re: splitting string to hash
- Next by thread: Re: splitting string to hash
- Index(es):
Relevant Pages
|