删除html中的其他语言空间



我想使用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)

在完整顺序解析中,它不能识别其他语言空间。

如何删除标记名称和属性之间的其他语言空间?(属性值之间的其他语言空间是OK的),这就是为什么我不能做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>

此代码用一个空格替换包括u3000(表意符号空间)在内的所有空格。空格前必须加<ELEMENT_NAME。但是前面的内容并没有被取代。(参见类模式中的"零宽度正向后看")ELEMENT_NAME的长度在此代码中限制在1到100之间。

相关内容

  • 没有找到相关文章

最新更新