Может ли регулярное выражение помочь этой строке поиска? IN: "abc d efg" OUT: ["% abc%", "% efg%"] - PullRequest
0 голосов
/ 02 апреля 2012

Может ли этот код быть оптимизирован с помощью регулярного выражения?

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

Он принимает строку, разбивает ее на массив и удаляет все элементы длиной 1 и упаковывает каждую строку в символы процента, готовые для SQL.

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

1 Ответ

1 голос
/ 02 апреля 2012

Это работает, но работает медленнее, я не думаю, что решение на основе регулярных выражений будет быстрее.

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

Избегание дублирования массивов кажется самым быстрым:

words = string.split
words.reject! { |s| s.length == 1 }
words.map! { |s| "%#{s}%" }
words
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...