0

我想使用 StringUtils.strip() 修剪标签名称和属性之间的空格。因为我有一些空间无法通过以下 Jericho 方法删除:

  • CharacterReference.decodeCollapseWhiteSpace(htmlFragment))
  • TextExtractor -Tag[] allTags = source.fullSequentialParse();

第一种方法删除正常空间,但不删除其他语言空间。这是我得到的错误。例如

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)

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

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

4

1 回答 1

0

您可以使用 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>

此代码将所有空格(包括(表意空格))替换\u3000为一个空格。空格必须以<ELEMENT_NAME. 但是前面没有被替换。(请参阅Class Pattern中的“零宽度正向lookbehind” )此代码中的长度限制ELEMENT_NAME在 1 到 100 之间。

于 2015-07-09T03:38:18.380 回答