0

我有一个 JSP,在文本区域中,我正在读取整个句子的字符串数组并逐行打印。不,我想以粗体和红色字体突出显示线条中的一些图案。例如,如果正在读取的行包含模式“error”(它可以是单个单词或单词的一部分,例如“initializationerror”或“”),它将以粗体和红色突出显示。该行的其余部分将按原样打印。

下面是代码片段:

<table border="2">
<% 
    if(session.getAttribute("Result") != null)
    {
        String Result = (String) session.getAttribute("Result");
        if(Result.length() != 0)
        {
            String[] split_EOL = Result.split("\n");
%>
            <tr align="center"> 
                <td>
                    // Text area start here 
                    <textarea rows="50" cols="100" readonly="yes">   
<%
                        for(int i = 0; i < split_EOL.length; i++)
                        {
                            out.println(split_EOL[i]);
                            out.println(" ");
                        }
%>
                    </textarea>
                 </td>
             </tr>
<%
         }
    }
%>
</table>

请帮忙

我尝试了以下方法:

<textarea rows="50" cols="100" readonly="yes"> 
<% 
     for(int i=0;i<split_EOL.length ; i++){ 
     out.println(split_EOL[i].replaceAll("\\b\\w*"+Pattern+"\\w*\\b", "<b>$0</b>"));   
     out.println(" "); 

                                          }
%> 
</textarea> 

这里 Pattern = ERROR ..... 但它显示如下

95323:[<b>ERROR</b>] Logger not set 

即使我确实在 out.println 中以粗体显示了一些单词,但它没有呈现粗体标签:

 out.println("<b>"+Pattern+"</b>");%>

仅显示

<b>ERROR</b>
4

3 回答 3

1

您可以将模式替换\b\w*error\w*\b<span class="error-string">$0</span>

out.println(split_EOL[i].replaceAll("\\b\\w*error\\w*\\b", "<span class=\"error-string\">$0</span>"));

并在 CSS 中定义

error-string {
    color: red;
    font-weight: bold;
}

如果您需要不区分大小写的搜索,您可以在模式前加上(?i),请参阅Pattern - Special 结构

于 2013-01-26T23:57:18.753 回答
0
<%if( //your condition )
  {
    out.println("<span style=\"font-weight:bold; color:red; \"> Bla Bla Bla </span>");
  }
%>
于 2013-01-26T23:57:43.570 回答
0

最简单的方法是: string textString="这是我想突出显示单词 text";

字符串高亮= "<mark>text</mark>"; ;

<%=textString.replaceAll("text", highlight) %>

于 2014-03-13T09:01:47.273 回答