我想使用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之间。