正则表达式会帮助这个搜索字符串吗? IN:" abc d efg" OUT:["%abc%","%efg%"]

时间:2012-04-02 18:19:44

标签: ruby-on-rails ruby regex arrays string

可以使用正则表达式优化此代码吗?

search = search.split.delete_if{|s|s.length==1}.map{|s|s="%#{s}%"}

它需要一个字符串,将其拆分为一个数组并删除任何长度为1的元素,并将每个字符串包装成为SQL准备的百分比符号。

IN:"abc d efg" OUT:["%abc%","%efg%"]

1 个答案:

答案 0 :(得分:1)

这很有效,但它的基准测试速度较慢,我认为基于正则表达式的解决方案不会更快。

string.scan(/\S{2,}/).map { |word| "%#{word}%" }

避免重复数组似乎是我能想到的最快:

words = string.split
words.reject! { |s| s.length == 1 }
words.map! { |s| "%#{s}%" }
words