不区分大小写的 XPath Contains()
问题:
使用 XPath 检查时文本节点中存在字符串,例如表达式 /html/body//text()[contains(.,'test')],搜索区分大小写。我们如何使 XPath for JavaScript 中的搜索不区分大小写?
答案:
虽然在 XPath 1.0 中没有直接的方法来执行不区分大小写的比较,有一些技术可以实现类似的结果:
/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test')]
此方法假设使用的字母表事先已知,因此请包含可能遇到的任何重音字符。
<code class="javascript">function xpathPrepare(xpath, searchString) { return xpath.replace("$u", searchString.toUpperCase()) .replace("$l", searchString.toLowerCase()) .replace("$s", searchString.toLowerCase()); } xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test"); // -> "//text()[contains(translate(., 'TEST', 'test'), 'test')]"</code>
无论使用什么字符集,都可以进行不区分大小写的搜索。
请注意,这些方法可能无法正确处理搜索字符串中的单引号。对于具有特殊字符的情况,可能需要其他方法。
以上是如何执行不区分大小写的 XPath Contains() 搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!