java
  • freemarker
  • 2013-02-07 63 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不能包含在正则表达式的特殊含义(或者那些必须进行转义)的任何字符。

    相关问题