0

searchText 文字列で文字列の一部を強調表示したいと思います。

例: 製品リファレンス abcDeFg (大文字と小文字を区別) があり、誰かがリファレンス「def」で製品を検索します。結果はabc<span class="hl">DeF</span>g

問題: 結果は強調表示された製品リファレンス (大文字と小文字を区別) でなければならない 例外結果:abc<span class='light'>DeF</span>g 私の結果: abc<span class='light'>def</span>g(def は非常に小さい)

現在、私は使用しています

 <#assign prodRef = product.getReference()>
 <#if (prodRef?lower_case?index_of(searchedText?lower_case) > -1)>
   <#assign textToReplace = "<span class='light'>" + searchedText + "</span>">
   ${product.reference?replace(searchedText, textToReplace, "i")}
 </#if>

誰かがこの問題を解決する方法を教えてもらえますか? 基本的に、元の参照の大文字と小文字を区別する文字列関数を置き換える必要があります。

4

1 に答える 1

2

正規表現はこれを単独で行うことができます:

${product.reference?replace(
     "(" + searchedText + ")",
     "<span class='light'>$1</span>",
     "ri"
)}

ただし、searchText正規表現で特別な意味を持つ文字を含めることはできません (またはエスケープする必要があります)。

于 2013-02-08T00:28:25.840 に答える