在 html 中删除其他语言 space
Remove other language space in html
我想使用 StringUtils.strip() trim 标记名称和属性之间的 space。因为我有一些 space 不能被删除
以下杰里科方法:
- CharacterReference.decodeCollapseWhiteSpace(htmlFragment))
- 文本提取器
-Tag[] allTags = source.fullSequentialParse();
第一种方法删除了普通语言 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之间。
我想使用 StringUtils.strip() trim 标记名称和属性之间的 space。因为我有一些 space 不能被删除 以下杰里科方法:
- CharacterReference.decodeCollapseWhiteSpace(htmlFragment))
- 文本提取器 -Tag[] allTags = source.fullSequentialParse();
第一种方法删除了普通语言 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之间。