有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将<img>替换为字符串中的<img></img>

我想用字符串中的结束<img></img>标记替换每个<img>标记。字符串实际上是一个html文档,其中img标记由我生成,并且始终如下所示:

<img src="some_source.jpg" style="some style attributes and values">

Src是用户输入,所以它可以是任何内容。 我做了一个正则表达式,不确定是否正确,因为这是我第一次使用它,但经过测试它是有效的。问题是我不知道如何保存src的内容

/<img\ssrc=".+?"\sstyle=".+?">/g

但是我很难替换字符串中的标记

我得到的只是这个:

    Pattern p = Pattern.compile("/<img\\ssrc=\".+?\"\\sstyle=\".+?\">/g");
    Matcher m = p.matcher(str);
    List<String> imgStrArr = new ArrayList<String>();
    while (m.find()) {
        imgStrArr.add(m.group(0));
    }
    Matcher m2 = p.matcher(str);

共 (2) 个答案

  1. # 1 楼答案

    您不必使用Pattern和Matcher类,您可以使用以下常规替换方法:

    str = str.replaceAll("(<img.*?>)", "$1</img>");
    

    IdeOne working demo

  2. # 2 楼答案

    可以使用以下正则表达式进行匹配:

    (<img[^>]+>)
    

    并替换为$1</img>

    代码:

    str = str.replaceAll("(<img[^>]+>)", "$1</img>");
    

    编辑:考虑@MarcusMüller的建议,你可以做以下事情:

    正则表达式:(<img[^>]+)>

    替换为$1/>

    代码:

    str = str.replaceAll("(<img[^>]+)>", "$1/>");