以红色显示真实 HTML 中的文本,而不是显示颜色代码为 color:#de350bduchessecolor 的文本

Posted

技术标签:

【中文标题】以红色显示真实 HTML 中的文本,而不是显示颜色代码为 color:#de350bduchessecolor 的文本【英文标题】:Display text in real HTML in red instead of displaying text with color code as color:#de350bduchessecolor以红色显示真实 HTML 中的文本,而不是显示颜色代码为 color:#de350bduchessecolor 的文本 【发布时间】:2022-01-17 03:04:37 【问题描述】:

我正在使用以下代码,并尝试将以下代码打印到 html 中:

import com.atlassian.jira.component.ComponentAccessor
import java.text.SimpleDateFormat
import com.opensymphony.util.TextUtils
import com.atlassian.jira.issue.comments.*
import org.w3c.dom.*;
import javax.xml.parsers.*;
import groovy.xml.*
import grrovy.util.*; 
import org.xml.sax.InputSource; 
import java.io.*; 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; 
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
def commentManager = ComponentAccessor.getCommentManager()

Comment comment = commentManager.getLastComment(issue)

if(comment != null) 
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MMM/yy HH:mm", Locale.ENGLISH)
    
    def writer = new StringWriter()
    def xml = new MarkupBuilder(writer)
    //the line below retrieves color:#de350bduchessecolor
    def body = comment.body
     
   
     

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
   
   
    
        
        String html = "<html><body><h1></h1><h1>"+body+"</h1></body></html>";
        System.out.println(html);           // original

        Document doc2 = Jsoup.parse(html);   // pretty print HTML
        System.out.println(doc2.toString());
        return doc2
   

我的输出格式为:color:#de350bduchessecolor 但我希望输出是真正可显示的 HTML,在这种情况下,这意味着只有“duchesse”应该显示为红色,而不是 color:#de350bduchessecolor。

我该如何解决这个问题?

【问题讨论】:

如果你想要它是红色的,你需要替换 /color:#de350b(\w+)color/,`&lt;span class="red"&gt;$1&lt;/span&gt;`) 或类似的 def body = comment.body 检索 color:#de350bduchessecolor,我希望该过程对任何颜色都是自动化的,所以我不想将每个颜色代码替换为你建议的代码sn-p 【参考方案1】:

您可以将正则表达式与两个捕获组一起使用。第一个将匹配颜色,第二个将收到消息。然后您可以将整个匹配的文本替换为&lt;font color="......."&gt; ... &lt;/font&gt;. 所以def body = comment.body之后使用这段代码:

Pattern p = Pattern.compile("\\color:(#......)\\(.*)\\color\\");
Matcher m = p.matcher(body);
if (m.find()) 
    String color = m.group(1);
    String content = m.group(2);
    body = body.replace(m.group(0), "<font color=\"" + color + "\">" + content + "</font>");

【讨论】:

以上是关于以红色显示真实 HTML 中的文本,而不是显示颜色代码为 color:#de350bduchessecolor 的文本的主要内容,如果未能解决你的问题,请参考以下文章

在word文档中如何将“以不同颜色突出显示文本”快捷键设置为ctrl+1 ?请简单具体一点。谢谢!

怎么去除文本中的HTML标签,我要显示成纯文本

以数值显示 SPL 级别,而不是改变颜色强度

html怎么改变字体大小和颜色

C# 视图 - 字体颜色

带有 AlternateViews 的 ASP.net / C# 电子邮件以显示 HTML 而不是纯文本