我想将一些文本替换为包含基本文本元素的其他文本。
例如:
text text
blabla HYPERLINK "mailto:x@x.com"x@x.com
text text
我想替换HYPERLINK "mailto:x@x.com"x@x.com to <a href="x@x.com">x@x.com</a>
所以结果应该是:
text text
blabla <a href="x@x.com">x@x.com</a>
text text
我怎样才能使用Java?
答案 0 :(得分:2)
以下是你如何做到这一点:
String str = "text text\n" +
"blabla HYPERLINK \"mailto:x@x.com\"x@x.com\n" +
"text text";
str = str.replaceAll("HYPERLINK \\\"mailto:(.*?)\\\"\\1", "<a href=\"$1\">$1</a>");
System.out.println(str);
编辑:
您可以从SO处使用的超链接降价处获取提示,并执行以下操作以获得更通用的解决方案:
String str =
"text text\n" +
"blabla (mailto:x@x.com)[this email] or (mailto:x@y.com)[x@y.com]\n" +
"text (http://www.google.com/)[this is google] text";
str = str.replaceAll("\\((.*?)\\)\\[(.*?)\\]", "<a href=\"$1\">$2</a>");
System.out.println(str);
答案 1 :(得分:2)
这就是诀窍......(很好的挑战: - ))
public static void parse() {
Pattern p = Pattern.compile("(.*)HYPERLINK \"mailto:(.*)\"(\\S*)(.*)");
Matcher m = p.matcher("blabla HYPERLINK \"mailto:x@x.com\"x@x.com");
if (m.matches()) {
String processed = m.group(1) + "<a href=\"" + m.group(2) + "\">" + m.group(3) + "</a>" + m.group(4);
System.out.println(processed);
}
}