«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как добиться поиска без учета регистра в XPath с помощью функции contains()?

Как добиться поиска без учета регистра в XPath с помощью функции contains()?

Опубликовано 7 ноября 2024 г.
Просматривать:401

How to Achieve Case-Insensitive Searching in XPath Using the contains() Function?

Функция содержит() XPath без учета регистра

В XPath функция contains() чувствительна к регистру. Однако есть способы обойти это ограничение.

Метод 1: перевод символов

Этот метод включает перевод символов в нижний или верхний регистр перед проверкой подстроки:

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]

При этом все прописные буквы в тексте преобразуются в строчные перед проверкой подстроки «test».

Метод 2: динамическое выражение XPath

Используя язык сценариев, такой как JavaScript, вы можете создать динамическое выражение XPath, которое обрабатывает нечувствительность к регистру:

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");

Это заменяет заполнители в выражении XPath с версиями строки поиска в верхнем, нижнем и нижнем регистре.

Дополнительные соображения

  • Оба метода предполагают, что алфавит известен.
  • Если текст элемента может содержать одинарные кавычки, экранируйте их, чтобы предотвратить синтаксические ошибки XPath.
  • При использовании метода 2 обрабатывайте экранированные кавычки в строке поиска.
Заявление о выпуске Эта статья перепечатана по адресу: 1729589295. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3