How do you make a hash key using a wordy string?

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

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

Thanks Dean. Makes sense!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs