From a49947d8158c2746a4a09cf2788c5923ee5d7765 Mon Sep 17 00:00:00 2001 From: bushixuanqi <57338301+bushixuanqi@users.noreply.github.com> Date: Sun, 18 Jul 2021 19:08:45 +0800 Subject: [PATCH] Update HtmlFormatter.kt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化 --- .../java/io/legado/app/utils/HtmlFormatter.kt | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt b/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt index 72c7c252f..2fa883f4d 100644 --- a/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt +++ b/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt @@ -27,7 +27,7 @@ object HtmlFormatter { .replace("[\\n\\s]+\$|^[\\n\\s]+".toRegex(), "") .replace("\\s*\\n+\\s*".toRegex(), "\n") - var str = "" + var str = StringBuffer() var endPos = 0 var hasMatch = true //普通图片标签是否还未处理过 var hasMatchX = false //是否存在带参数或带数据属性的图片标签 @@ -81,12 +81,41 @@ object HtmlFormatter { if (appendPos != 0) { hasMatchX = true //存在带参数或带数据属性的图片标签 endPos = appendPos //存在匹配,更新位置 - str = sb.toString() //存在匹配,更新字符串 + str = sb //存在匹配,更新字符串 } } - return if (endPos < keepImgHtml.length) { - str + keepImgHtml.substring( endPos, keepImgHtml.length ).replace("\n","\n  ") //缩进图片之后的非空白段落 - }else str + if (endPos < keepImgHtml.length) { + str.append( ( + if(hasMatchX){ //处理末尾的普通图片标签 + var appendPos0 = 0 + val strBefore = keepImgHtml.substring(endPos, keepImgHtml.length) + val matcher0 = + Pattern.compile("]*src *= *\"([^\"]+)\"[^>]*>", Pattern.CASE_INSENSITIVE) + .matcher(strBefore) //格式化普通图片标签 + while (matcher0.find()) { + val strBefore0 = strBefore.substring(appendPos0, matcher0.start()) + str.append( + if (strBefore0.isBlank()) strBefore0 else strBefore0.replace( + "\n", + "\n  " + ) + ) + str.append( + "" + ) + appendPos0 = matcher0.end() + } + if (appendPos0 < strBefore.length) strBefore.substring( appendPos0, strBefore.length ) else "" + }else keepImgHtml.substring( endPos, keepImgHtml.length ) + ).replace("\n","\n  ") ) //缩进图片之后的非空白段落 + } + + return str.toString() } }