我正在开发一个文本到 HTML 解析器。我使用“@@”符号来标记粗体字符。例如。
Example @@Bold text in a paragraph
变成:
Example <strong>Bold</strong> text in paragraph
以下代码有效,但我发现它仅适用于找到的最后一个粗体符号:
private static String escapeBold(String sCurrentLine) {
if (sCurrentLine.indexOf("@@") < 0) {
return sCurrentLine;
}
String newString = null;
String oldString = null;
String chars[] = sCurrentLine.split(" ");
for (String s : chars) {
if (s.startsWith("@@")) {
newString = "<strong>" + s.replaceAll("@@", "") + "</strong>";
oldString = s;
}
}
return (sCurrentLine.replaceAll(oldString, newString));
}
是否有更简单的方法来做到这一点,也许使用 RegExpr ? 谢谢!
最佳答案
看起来你的方法看起来像
private static String escapeBold(String sCurrentLine) {
return sCurrentLine.replaceAll("@@(\\w+)", "<strong>$1</strong>");
}
它将尝试找到每个 @@someWord
并放置someWord
属于第 1 组。在替换中,我们使用通过 $1
存储在第 1 组中的匹配项。并简单地用 <strong>
包围它标签。
要理解这段代码,您需要知道 replaceAll(regex,replacement)
使用正则表达式(regex)找到我们想要修改的部分,replacement
描述我们想要如何修改它。
在正则表达式中\\w
代表 a-z
范围内的字符A-Z
0-9
和_
。如果您想包含其他字符,您可以创建自己的字符类,或使用 \\S
它代表所有非空白字符。
关于Java 正则表达式将 HTML 标签包裹在文本周围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378343/