2013-04-11 65 views
1

好了,所以我建立的东西,需要一个文本文件,然后将其分解成多个部分被进一步划分为条目,并提出<a>标签周围的每个条目的一部分。我有一个实例变量,@section_name,我需要使用它来创建链接。问题是,如果我看错了,@section_name似乎会失去它的价值。有些代码:我的实例变量不持有其价值

def find_entries 
    @sections.each do |section| 
    @entries = section.to_s.shatter(/(some) RegEx/) 
    @section_name = $1.to_s 
    puts @section_name 
    add_links 
    end 
end 

def add_links 
    puts "looking for #{@section_name} in #{@section_hash}" 
    section_link = @section_hash.fetch(@section_name) 
end 

如果我注释掉调用add_links,它吐出来的所有章节的名字,但如果我有,我只是得到:

looking for in {"contents" => "of", "the" => "hash"} 

任何帮助是多少不胜感激!

+1

向我们展示您使用的正则表达式。 – 2013-04-11 19:05:30

+0

做'放$ 1.to_s'并向我们显示输出 – Huy 2013-04-11 19:07:12

回答

1

$1是一个全局变量,其可以在后面的代码来使用。 $n包含n-th (...)拍摄最后一场比赛的

"foobar".sub(/foo(.*)/, '\1\1') 
puts "The matching word was #{$1}" #=> The matching word was bar 

"123 456 789" =~ /(\d\d)(\d)/ 
p [$1, $2] #=> ["12", "3"] 

所以我觉得@entries = section.to_s.shatter(/(some) RegEx/)线没有做配搭不当。因此您的第一个匹配组不包含任何内容所以$1打印零。

+0

非常感谢!你是对的,RegEx首先返回一个空白值,这导致了所有问题。它看起来就像添加“if @section_name!=”“”将解决这个问题。干杯! – Tom 2013-04-11 19:29:42

+0

高兴地帮助你。 :) – 2013-04-11 19:31:03