diff --git a/basic-util/src/main/java/ink/wgink/util/HtmlHelper.java b/basic-util/src/main/java/ink/wgink/util/HtmlHelper.java index 699bf9f2..b746870a 100644 --- a/basic-util/src/main/java/ink/wgink/util/HtmlHelper.java +++ b/basic-util/src/main/java/ink/wgink/util/HtmlHelper.java @@ -1,5 +1,8 @@ package ink.wgink.util; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; + import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -56,4 +59,48 @@ public class HtmlHelper { return html; } + /** + * 格式化HTML代码 + * + * @param code html代码 + * @param indentType 缩进类型,默认是空格 + * @param indentCount 缩进数量 + * @return + */ + public static String formatHtml(String code, String indentType, int indentCount) { + if (StringUtils.isBlank(code)) { + return null; + } + code = code.replaceAll(">\\s+<", "><"); + String html = Jsoup.parseBodyFragment(code).body().html(); + if (StringUtils.isBlank(html)) { + return null; + } + if (indentType == null) { + indentType = " "; + } + if (indentCount < 0) { + indentCount = 0; + } + String[] htmlArray = html.split("\n"); + String result = ""; + for (String htmlLine : htmlArray) { + int startIndex = htmlLine.indexOf("<"); + String tab = ""; + for (int i = 0; i < startIndex + indentCount; i++) { + tab += indentType; + } + htmlLine = tab + htmlLine.trim(); + System.out.println(htmlLine); + result += htmlLine + "\n"; + } + return result; + } + + public static void main(String[] args) { + String code = "
"; + String result = formatHtml(code, "\t", 0); + System.out.println(result); + } + }