Jsp 突出显示第二个字符串中第一个字符串的所有单词

Jsp 突出显示第二个字符串中第一个字符串的所有单词,jsp,jsp-tags,Jsp,Jsp Tags,我正在创建一个变量highlightedSearchKey,然后用名称字符串中的highlightedSearchKey替换searchKey字符串 如果搜索字符串是连续的,则此操作有效。但它并没有突出显示中止字符串 例:string1-好孩子 这个男孩很好。(应突出显示“好”和“男孩”) searchKey(第一个字符串)=>这是搜索字符串。我想突出显示第二个字符串中的单词 名称(第二个字符串)=>这是显示的结果 <c:set var="highlightedSearchKey"

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

如果搜索字符串是连续的,则此操作有效。但它并没有突出显示中止字符串

例:string1-好孩子
这个男孩很好。(应突出显示“好”和“男孩”)

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

名称(第二个字符串)=>这是显示的结果

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


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

${fn:replace(名称、搜索键、highlightedSearchKey)}

请复制并粘贴此示例

<%@ 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>

${current}
${current}

另一种方式
${current} ${current}
fn:replace仅在searchKey的全部内容匹配时进行替换。“This boy is good”不包含“good boy”,因此没有匹配项。@aro_tech正是如此,这就是为什么我需要一个替代项来执行此操作。您可能需要编写一个自定义JSP标记,将搜索关键字拆分为多个搜索词,并替换每个搜索词的文本。