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"} 

任何帮助深表感谢!

4

1 回答 1

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/)line 没有正确匹配。因此您的第一个匹配组不包含任何内容。所以$1打印为零。

于 2013-04-11T19:09:47.983 回答