Maison >interface Web >js tutoriel >Comment effectuer des recherches XPath Contains() insensibles à la casse ?
Xpath insensible à la casse contient()
Question :
Lors de l'utilisation de XPath pour vérifier l'existence d'une chaîne dans un nœud de texte, comme avec l'expression /html/body//text()[contains(.,'test')], la recherche est sensible à la casse. Comment pouvons-nous rendre la recherche insensible à la casse dans XPath pour JavaScript ?
Réponse :
Bien qu'il n'existe aucun moyen simple d'effectuer des comparaisons insensibles à la casse dans XPath 1.0, il existe des techniques pour obtenir un résultat similaire :
/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test')]
Cette méthode suppose que l'alphabet utilisé est connu à l'avance, incluez donc tous les caractères accentués qui pourraient être rencontrés.
<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>
Cela permet des recherches insensibles à la casse, quel que soit le jeu de caractères utilisé.
Notez que ces méthodes peuvent ne pas gérer correctement les guillemets simples dans les chaînes de recherche. Pour les cas comportant des caractères spéciaux, des approches alternatives peuvent être nécessaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!