From b17e69c6a1601cd23489eb8bc7370c4c87150d9a Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 14 Oct 2022 17:12:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/utils/RegexExtensions.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/utils/RegexExtensions.kt b/app/src/main/java/io/legado/app/utils/RegexExtensions.kt index 24a3f0581..ec3eee658 100644 --- a/app/src/main/java/io/legado/app/utils/RegexExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/RegexExtensions.kt @@ -8,8 +8,8 @@ import io.legado.app.exception.RegexTimeoutException * 带有超时检测的正则替换 */ fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): String { - val charSequence = this val startTime = System.currentTimeMillis() + val charSequence = this val isJs = replacement.startsWith("@js:") val replacement1 = if (isJs) replacement.substring(4) else replacement val pattern = regex.toPattern() @@ -33,3 +33,19 @@ fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): Stri return stringBuffer.toString() } +class ListenerCharSequence(private val inner: CharSequence) : CharSequence { + + var charAtListener: ((Int) -> Unit)? = null + + override val length: Int = inner.length + + override fun get(index: Int): Char { + charAtListener?.invoke(index) + return inner[index] + } + + override fun subSequence(startIndex: Int, endIndex: Int): CharSequence { + return inner.subSequence(startIndex, endIndex) + } + +}