如何创建一个nokogiri不区分大小写的文本*搜索?

时间:2010-09-27 09:48:06

标签: ruby-on-rails nokogiri case-sensitive

Currnetly我在做

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 个答案:

答案 0 :(得分:3)

lower-case XPath函数不可用,但您可以使用translate XPath 1.0函数将文本转换为小写,例如对于英文字母:

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

我似乎无法将此与*=运算符结合使用,但您可以使用contains来进行子字符串搜索,从而完成所有操作:

doc.search("//*[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'philip morris')]")