From: Dean Wampler Date: 2008-12-03T23:48:46+09:00 Subject: Re: How do you make a hash key using a wordy string? 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 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