代码之家  ›  专栏  ›  技术社区  ›  user10209

按给定顺序突出显示数组的元素

  •  0
  • user10209  · 技术社区  · 8 年前

    我在一个列表中有一个按给定顺序排列的句子数组,还有另一个数组,其中第一个数组中的部分句子按另一个顺序排列。我在spring MVC框架中。

    ArrayList<String> first = new ArrayList<>();
    ArrayList<String> second = new ArrayList<>();
    Integer len1;
    Integer len2;
    
    first.add("Marry ");
    first.add("had ");
    first.add("a ");
    first.add("little lamb.");
    second.add("Marry "); //first added
    second.add("little lamb."); //second added
    
    len1=first.length();
    len2=second.length();
    model.addAttribute("first", first);
    model.addAttribute("second", second);
    model.addAttribute("len1",len1);
    model.addAttribute("len2",len2);
    

    我想做的是显示第一个数组的元素,并突出显示与第二个数组匹配的元素,但要突出显示,这样我可以通过使用渐变来区分哪个是第一个元素,哪个是第二个元素。 我这样显示第一个数组。

     <c:forEach var="i" items="${first}" end="${len1}">
     <c:out value="${i}"/>
     </c:forEach>
    

    我试着在forEach中做,但我不确定这是怎么做的,至少不是梯度。 最终结果应该是

    玛丽有一只小羊羔。

    如果渐变从红色到黄色,那么“Marry”应该突出显示为红色,“little lamb”应突出显示为黄色。

    1 回复  |  直到 8 年前
        1
  •  0
  •   user10209    8 年前

    我还没有找到一个解决方案,可以将渐变应用于每一行,这主要是因为css渐变是从上到下或从左到右应用的,如果文本在一列中断开,则渐变将从左到右侧应用于整个块,而不是让每一行都具有渐变。 我改成了粗体。

    这就是解决方案。

    <c:forEach var="i" items="${first}" >
                  <c:choose><c:when test="${second.contains(i)}">
                      <strong ><c:out value="${i}"/></strong>
                  </c:when><c:otherwise>
                      <c:out value="${i}"/>
                  </c:otherwise></c:choose>
              </c:forEach>
    

    我也不得不相信这个答案。

    https://stackoverflow.com/questions/35022587/highlight-text-in-jstl