Ruby中的字符串操作

Ruby中的字符串操作,ruby,regex,string,Ruby,Regex,String,给定一个数组: 1.9.2p290 :172 > tags_array = %w[one two] => ["one", "two"] 1.9.2p290 :173 > 如何操作它以返回(准确地)以下字符串 [/^one/i, /^two/i] 。。。我尝试一下: 1.9.2p290 :173 > tags_array.collect! {|tag| "/^"+tag+"/i"} => ["/^one/i", "/^two/i"] 1.9.2p290

给定一个数组:

1.9.2p290 :172 >   tags_array = %w[one two]
 => ["one", "two"] 
1.9.2p290 :173 >
如何操作它以返回(准确地)以下字符串

[/^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]

您必须映射
Regexp::new

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

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

您必须映射
Regexp::new

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

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

如果需要Regexp数组,可以在regex文本中使用字符串插值:

%w[one two].map { |tag| /^#{tag}/i }

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

%w[one two].map { |tag| /^#{tag}/i }

预期结果不是字符串,而是regexp数组。实际结果也是字符串数组,而不是字符串。你能澄清一下吗?忘记任何结构,因为第一个数组我想要一个字符串,字符串将由源数组的每个元素组成,周围是regexes字符(不区分大小写)…你的预期结果似乎不是一个字符串,而是一个regexp数组。实际结果也是字符串数组,而不是字符串。你能澄清一下吗?忘记任何结构,因为第一个数组我想要一个字符串,字符串将由源数组的每个元素组成,周围是正则字符(不区分大小写)…我得到了这个结果:1.9.2p290:187>tags\u array=%w[one-two]=>1.9.2p290:188>tag\u array.collect!{| tag | Regexp.new(“^{tag}”,true)}=>我的答案与另一个用户提供的答案完全相同,唯一的区别是我使用了显式构造函数:在
[“一”,“二”]
数组上尝试它,它会很好地工作。我得到了这个结果:1.9.2p290:187>标记数组=%w[一两]=>[“一”,“二”]1.9.2p290:188>标记数组。收集!{| tag | Regexp.new(“^{tag}”,true)}=>我的答案与另一个用户提供的答案完全相同,唯一的区别是我使用了显式构造函数:在
[“一”,“二”]
数组上尝试它,它会工作得很好。