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)}=>我的答案与另一个用户提供的答案完全相同,唯一的区别是我使用了显式构造函数:在[“一”,“二”]
数组上尝试它,它会工作得很好。