anitawa
(anitawa)
14 August 2007 23:00
1
Hello,
I want to be able to parse a string and put them into variables.
for example, I have this string:
"Menu: steak_and_egg | date: 0814 | who: Anita"
I want to parse this string to assign variables like so:
menu = "steak_and_egg"
date = "0814"
who = "Anita"
What would be the fastest way of doing this.
Thanks
Hello,
I want to be able to parse a string and put them into variables.
for example, I have this string:
"Menu: steak_and_egg | date: 0814 | who: Anita"
I want to parse this string to assign variables like so:
menu = "steak_and_egg"
date = "0814"
who = "Anita"
What would be the fastest way of doing this.
This might work if your data isn't too complicated:
>> str = "Menu: steak_and_egg | date: 0814 | who: Anita"
=> "Menu: steak_and_egg | date: 0814 | who: Anita"
>> Hash[*str.scan(/(\w+):\s*(\w+)/).flatten]
=> {"date"=>"0814", "who"=>"Anita", "Menu"=>"steak_and_egg"}
James Edward Gray II
···
On Aug 14, 2007, at 6:00 PM, anitawa wrote:
Olivier
(Olivier)
15 August 2007 18:26
3
This is a CSV format, You can use the csv lib from the stdlib :
# parse with : and | as delimiters
str = "Menu: steak_and_egg | date: 0814 | who: Anita"
parsed = CSV.parse(str, ":", "|")
=> [["Menu", " steak_and_egg "], [" date", " 0814 "], [" who", " Anita"]]
# then, put the results in a hash
res = {}
parsed.each do |k, v|
res[k.strip] = v.strip
end
=> {"date"=>"0814", "who"=>"Anita", "Menu"=>"steak_and_egg"}
You can also use Enumerable#inject for putting in the Hash (or Hash:: with
some adaptations)
···
Le mercredi 15 août 2007 01:00, anitawa a écrit :
Hello,
I want to be able to parse a string and put them into variables.
for example, I have this string:
"Menu: steak_and_egg | date: 0814 | who: Anita"
I want to parse this string to assign variables like so:
menu = "steak_and_egg"
date = "0814"
who = "Anita"
What would be the fastest way of doing this.
Thanks
--
Olivier Renaud
James Edward Gray II wrote:
···
On Aug 14, 2007, at 6:00 PM, anitawa wrote:
Hello,
I want to be able to parse a string and put them into variables.
for example, I have this string:
"Menu: steak_and_egg | date: 0814 | who: Anita"
I want to parse this string to assign variables like so:
menu = "steak_and_egg"
date = "0814"
who = "Anita"
What would be the fastest way of doing this.
This might work if your data isn't too complicated:
>> str = "Menu: steak_and_egg | date: 0814 | who: Anita"
=> "Menu: steak_and_egg | date: 0814 | who: Anita"
>> Hash[*str.scan(/(\w+):\s*(\w+)/).flatten]
=> {"date"=>"0814", "who"=>"Anita", "Menu"=>"steak_and_egg"}
Might be more general than is needed. If you know in advance that the "fields" are menu, date, and who, then this will do:
str = "Menu: steak_and_egg | date: 0814 | who: Anita"
pat = /Menu: (\S+) \| date: (\S+) \| who: (\S+)/
menu, date, who = str.scan(pat)[0]
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
anitawa
(anitawa)
15 August 2007 21:40
5
Thanks, just what i was looking for
···
On Aug 14, 8:12 pm, Joel VanderWerf <vj...@path.berkeley.edu> wrote:
James Edward Gray II wrote:
> On Aug 14, 2007, at 6:00 PM, anitawa wrote:
>> Hello,
>> I want to be able to parse a string and put them into variables.
>> for example, I have this string:
>> "Menu: steak_and_egg | date: 0814 | who: Anita"
>> I want to parse this string to assign variables like so:
>> menu = "steak_and_egg"
>> date = "0814"
>> who = "Anita"
>> What would be the fastest way of doing this.
> This might work if your data isn't too complicated:
> >> str = "Menu: steak_and_egg | date: 0814 | who: Anita"
> => "Menu: steak_and_egg | date: 0814 | who: Anita"
> >> Hash[*str.scan(/(\w+):\s*(\w+)/).flatten]
> => {"date"=>"0814", "who"=>"Anita", "Menu"=>"steak_and_egg"}
Might be more general than is needed. If you know in advance that the
"fields" are menu, date, and who, then this will do:
str = "Menu: steak_and_egg | date: 0814 | who: Anita"
pat = /Menu: (\S+) \| date: (\S+) \| who: (\S+)/
menu, date, who = str.scan(pat)[0]
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407