Hello everyone.
How do you make a hash key using a string? For instance,
txt file...
1 This is a string 22234343
2 This is another string 434355455
3 This is a different string 34324545
file = File.open("mytext4hash.txt")
file.each_line do |line|
rows = {}
key, val = line.chomp.split("""",4)
rows[key] = val
#this is where I am having issue.
puts rows["1 This is a string"] #need this to point to only "22234343"
end
Thanks in advance. MC
···
--
Posted via http://www.ruby-forum.com/.
Try this:
file = File.open("mytext4hash.txt")
rows = {}
file.each_line do |line|
/(.+)\s+(\d+)$/ =~ line.chomp
key = Regexp.last_match(1)
val = Regexp.last_match(2)
rows[key] = val
end
puts rows["1 This is a string"] #need this to point to only "22234343"
First, you were initializing "rows" inside the loop, which meant you
only kept the last line parsed! The regular expression does this:
(.+) matches at least one character (defaults to starting at the
beginning) and save it in the first "capture group". The parentheses
do that for you. I then refer to it on the next line; the "1" passed
to last_match.
\s+ matches at least one space.
(\d+)$ matches at least one digit at the end of the line ($) and
saves it as the second capture group.
Make sense?
dean
···
On Wed, Dec 3, 2008 at 8:09 AM, Mmcolli00 Mom <mmc_collins@yahoo.com> wrote:
Hello everyone.
How do you make a hash key using a string? For instance,
txt file...
1 This is a string 22234343
2 This is another string 434355455
3 This is a different string 34324545
file = File.open("mytext4hash.txt")
file.each_line do |line|
rows = {}
key, val = line.chomp.split("""",4)
rows[key] = val
#this is where I am having issue.
puts rows["1 This is a string"] #need this to point to only "22234343"
end
Thanks in advance. MC
--
Posted via http://www.ruby-forum.com/\.
--
Dean Wampler
http://www.objectmentor.com
http://www.polyglotprogramming.com
http://www.aspectprogramming.com
http://aquarium.rubyforge.org
http://www.contract4j.org
Thanks Dean. Makes sense!
···
--
Posted via http://www.ruby-forum.com/.