2015-04-22 53 views

回答

2

如果这是您的意图,那么在这里使用正则表达式确实没有任何问题。使用其中一种比通过比较数组的麻烦通常更高效。

值得注意的你不必做那么多工作,得到这样的:

re = Regexp.union(array) 

应该处理自动转义这些字符串,并将其编译成一个单一的正则表达式。请确保使用包含*?的字符串进行测试。

需要注意的一点是,=~运算符是Perl的一个保留。最好使用string.match(re)来清楚说明发生了什么。

1

阵列有多大?使用正则表达式与检查每个元素比较速度可能是值得的。如果数组排序时间最短到最长,这将有助于逐一检查,因为您更可能首先找到匹配项。

在任何情况下,这也是一个办法:

array_o_strings.any?{|e| string.index(e) } 
相关问题