「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > contains() 関数を使用して XPath で大文字と小文字を区別しない検索を実現するにはどうすればよいですか?

contains() 関数を使用して XPath で大文字と小文字を区別しない検索を実現するにはどうすればよいですか?

2024 年 11 月 7 日に公開
ブラウズ:521

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

大文字と小文字を区別しない XPath contains() 関数

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