突出显示2nd String中1st String的所有单词

时间:2016-01-29 13:14:58

标签: jsp jsp-tags

我正在创建一个变量highlightedSearchKey,然后用名称字符串中的highlightedSearchKey替换searchKey字符串

如果搜索字符串是连续的,则此方法有效。但它并没有突出显示不连续的字符串。

例如:string1-好孩子
    string2-这个男孩很好。 (好的和男孩都应该突出显示)

searchKey(1st string)=>这是搜索字符串。我想在第二篇中突出显示这个字符串的单词。

name(2nd string)=>这是显示的结果。

    <c:set var="highlightedSearchKey" value="
   <label style='background-color:yellow'>
    ${searchKey}
   </label> "/>


   <td>${fn:replace(name, searchKey, highlightedSearchKey)}</td>

1 个答案:

答案 0 :(得分:0)

请复制并粘贴此示例。

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<c:set var="string1"  value="good boy"/> 
<c:set var="string2"  value="This boy is good"/> 
<c:set var="array2"  value='${fn:split(string2, " ")}'/>
<html>
    <body>
        <c:forEach items="${array2}" var="current">
            <c:choose>
                <c:when test="${fn:contains(string1, current)}">
                    <label style='background-color:yellow'>
                    ${current}
                    </label>
                </c:when>
                <c:otherwise>
                    ${current}
                </c:otherwise>
            </c:choose>
        </c:forEach>
        <br/>Another way<br/>
        <c:set var="string1"  value="goods boy"/> 
        <c:set var="array1"  value='${fn:split(string1, " ")}'/>
        <c:set var="string2"  value="This boy is good goodly aboy goods"/> 
        <c:set var="array2"  value='${fn:split(string2, " ")}'/>
        <c:forEach items="${array2}" var="current">
            <c:set var="found"  value="false"/>
            <c:forEach items="${array1}" var="curr">
                <c:if test="${curr == current}">
                    <c:set var="found"  value="true"/>
                </c:if>
            </c:forEach>
            <c:choose>
                <c:when test="${found}">
                    <label style='background-color:yellow'>
                    ${current}
                    </label>
                </c:when>
                <c:otherwise>
                    ${current}
                </c:otherwise>
            </c:choose>
        </c:forEach>
    </body> 
</html>