可以使用正则表达式优化此代码吗?
search = search.split.delete_if{|s|s.length==1}.map{|s|s="%#{s}%"}
它需要一个字符串,将其拆分为一个数组并删除任何长度为1的元素,并将每个字符串包装成为SQL准备的百分比符号。
IN:"abc d efg"
OUT:["%abc%","%efg%"]
答案 0 :(得分:1)
这很有效,但它的基准测试速度较慢,我认为基于正则表达式的解决方案不会更快。
string.scan(/\S{2,}/).map { |word| "%#{word}%" }
避免重复数组似乎是我能想到的最快:
words = string.split
words.reject! { |s| s.length == 1 }
words.map! { |s| "%#{s}%" }
words