0

给定一个数组:

1.9.2p290 :172 >   tags_array = %w[one two]
 => ["one", "two"] 
1.9.2p290 :173 >

如何对其进行操作以返回(确切地)以下 String ?

[/^one/i, /^two/i]

...我试试这个:

1.9.2p290 :173 > tags_array.collect! {|tag| "/^"+tag+"/i"}
 => ["/^one/i", "/^two/i"] 
1.9.2p290 :174 > 

但我真的想要[/^one/i, /^two/i]没有双引号。

4

2 回答 2

4

如果您想要一个正则表达式数组,您可以在正则表达式文字中使用字符串插值:

%w[one two].map { |tag| /^#{tag}/i }
于 2012-05-10T22:31:42.440 回答
1

你必须映射Regexp::new

tag_array.collect! { |tag| Regexp.new("^#{tag}", true) }
=> [/^one/i, /^two/i]

注意true作为第二个参数传递给Regexp::new: 这意味着生成的正则表达式应该不区分大小写。

于 2012-05-10T22:30:53.963 回答