在 html 中删除其他语言 space

Remove other language space in html

我想使用 StringUtils.strip() trim 标记名称和属性之间的 space。因为我有一些 space 不能被删除 以下杰里科方法:

第一种方法删除了普通语言 space 但没有删除其他语言 space。 这是我得到的错误。例如

html = "<a   href=\"test.html\"><font></font></a>";

StartTag a at (r1,c1,p0) rejected because the name contains an invalid character at position (r1,c3,p2)
Encountered possible StartTag at (r1,c1,p0) whose content does not match a registered StartTagType

jericho 中也有一个 generateHTML 方法,但我们必须提供所有属性值等

public static java.lang.String generateHTML(java.util.Map<java.lang.String,java.lang.String> attributesMap)

在完全顺序解析中它无法识别其他语言 space。

如何删除标签名称和属性之间的其他语言 space ONLY? (属性值之间的其他语言 space 可以)这就是为什么我不能做 string.replaceALL()

您可以使用 String.replaceAll()。

    String html = "<a   href=\"test.html\">   <font></font></a>";
    System.out.println(html.replaceAll("(?<=<\w{1,100})[\s\u3000]+", " "));
    // -> <a href="test.html">   <font></font></a>

此代码将所有 space 替换为一个 space,包括 \u3000(表意文字 space)。 space 前面必须有 <ELEMENT_NAME。但是前面的没有被替换。 (参见Class Pattern中的"zero-width positive lookbehind")此代码中ELEMENT_NAME的长度限制在1到100之间。