Java 正则表达式将 HTML 标签包裹在文本周围

标签 java

我正在开发一个文本到 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/

相关文章:

java - 如何打印 TicTacToe 棋盘之间的线条

java - 表分区的抽象层 - JPA

java - 如何建立 TCP 连接并将数据发送到 Android Virtual Device App

java - 如何在 HttpServletRequest 中设置参数?

java - Android TextView 中的特殊字符

java - 我可以在 hql 单词中指定返回类型吗

java - 如何在java代码中使用scala.collection.immutable.List数组

java - 计算排序过程中进行比较和移动的次数

java - 如何用自己的实现替换 AWT EventQueue

java - 如何限制 Hibernate 仅生成来自涉及多个实体的 Criteria API 中根实体的列的 SQL 查询