以红色显示真实 HTML 的文本,而不是将颜色代码显示为 {color:#de350b}duchesse{color} 的文本
Display text in real HTML in red instead of displaying text with color code as {color:#de350b}duchesse{color}
我正在使用以下代码,我正在尝试将以下代码打印到 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:#de350b}duchesse{color}
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:#de350b}duchesse{color}
但我希望输出是真正可显示的 HTML 这在这种情况下意味着只有“duchesse”应该显示为红色而不是 {color:#de350b}duchesse{color}.
我该如何解决这个问题?
您可以对两个捕获组使用正则表达式。第一个将匹配颜色,第二个将收到消息。然后你可以用
替换整个匹配的文本
<font color="......."> ... </font>
.
所以在 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:
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:#de350b}duchesse{color}
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:#de350b}duchesse{color} 但我希望输出是真正可显示的 HTML 这在这种情况下意味着只有“duchesse”应该显示为红色而不是 {color:#de350b}duchesse{color}.
我该如何解决这个问题?
您可以对两个捕获组使用正则表达式。第一个将匹配颜色,第二个将收到消息。然后你可以用
替换整个匹配的文本
<font color="......."> ... </font>
.
所以在 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>");
}