不區分大小寫的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中文網其他相關文章!