Как я могу создать текстовый поиск * без учета регистра символов? - PullRequest
3 голосов
/ 27 сентября 2010

В настоящее время я делаю

words = []
words << "philip morris"
words << "Philip morris"
words << "philip Morris"
words << "Philip Morris"
for word in words
  doc.search("[text()*='#{word}']")
end

Когда я использовал hpricot, я нашел, где можно свернуть результаты в геме, чтобы я мог просто вести все свои поиски в нижнем регистре, однако nokogiri было довольно трудно найти, где можно было бы сделать это. Кто-нибудь знает способ сделать это? Большое спасибо за ваше время

1 Ответ

3 голосов
/ 27 сентября 2010

Функция lower-case XPath недоступна, но вы можете использовать функцию translate XPath 1.0, чтобы преобразовать ваш текст в нижний регистр, например для английского алфавита:

translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')

Я не могуиспользуйте это в сочетании с оператором *=, но вместо этого вы можете использовать contains, чтобы выполнить поиск по подстроке, выполнив полный текст:

doc.search("//*[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'philip morris')]")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...