java
  • freemarker
  • 2013-02-07 64 views 0 likes 
    0

    我想使用searledText字符串突出顯示字符串的一部分。Freemarker字符串突出顯示

    例: 我有一個產品參考文獻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> 
    

    有人可以告訴我如何解決這個問題? 基本上我需要替換字符串函數,它將保持原始引用的大小寫敏感性。

    +0

    'lower_case'不具有破壞性;如果得到這個,你確定'searText'不是小寫嗎? –

    +0

    我的代碼的第二行不影響產品的參考。我只是用它來找出如果searledText存在於產品參考。 – gospodin

    +0

    我明白這一點。我要求你在它到達那條線之前確保它實際上是混合大小寫,因爲這裏沒有任何東西可以將它輸出爲小寫。 –

    回答

    2

    正則表達式可以單獨做到這一點:

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

    然而,然後searchText不能包含在正則表達式的特殊含義(或者那些必須進行轉義)的任何字符。

    相關問題