From 7a8776450ecf4ef0755966dd688f15d00b2b2e1f Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Thu, 27 Oct 2022 13:16:56 +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 --- .../legado/app/model/analyzeRule/AnalyzeUrl.kt | 6 ++++-- .../source/debug/BookSourceDebugActivity.kt | 17 +++++++++++++++-- .../io/legado/app/utils/StringExtensions.kt | 5 +++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index c9bd620e1..523120290 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -14,6 +14,7 @@ import io.legado.app.data.entities.BaseSource import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter import io.legado.app.exception.ConcurrentException +import io.legado.app.exception.NoStackTraceException import io.legado.app.help.CacheManager import io.legado.app.help.JsExtensions import io.legado.app.help.config.AppConfig @@ -222,8 +223,9 @@ class AnalyzeUrl( queryStr = fieldsTxt val queryS = fieldsTxt.splitNotBlank("&") for (query in queryS) { - val value = query.substringAfter("=") - val key = query.substringBefore("=") + val queryPair = query.splitNotBlank("=", limit = 2) + val key = queryPair[0] + val value = queryPair.getOrNull(1) ?: "" if (charset.isNullOrEmpty()) { if (NetworkUtils.hasUrlEncoded(value)) { fieldMap[key] = value diff --git a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt index 1b16f272a..4f893e56a 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt @@ -11,6 +11,7 @@ import io.legado.app.R import io.legado.app.base.VMBaseActivity import io.legado.app.databinding.ActivitySourceDebugBinding import io.legado.app.help.source.exploreKinds +import io.legado.app.lib.dialogs.selector import io.legado.app.lib.theme.accentColor import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.qrcode.QrCodeResult @@ -22,6 +23,7 @@ import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding import kotlinx.coroutines.launch import splitties.views.onClick +import splitties.views.onLongClick class BookSourceDebugActivity : VMBaseActivity() { @@ -130,14 +132,25 @@ class BookSourceDebugActivity : VMBaseActivity + binding.textFx.onLongClick { + selector("选择发现", exploreKindTitles) { _, index -> + val explore = exploreKinds[index] + binding.textFx.text = "${explore.title}::${explore.url}" + searchView.setQuery(binding.textFx.text, true) + } } } } diff --git a/app/src/main/java/io/legado/app/utils/StringExtensions.kt b/app/src/main/java/io/legado/app/utils/StringExtensions.kt index f273cc45a..a02596bdb 100644 --- a/app/src/main/java/io/legado/app/utils/StringExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/StringExtensions.kt @@ -73,8 +73,9 @@ fun String?.isTrue(nullIsTrue: Boolean = false): Boolean { return !this.matches("\\s*(?i)(false|no|not|0)\\s*".toRegex()) } -fun String.splitNotBlank(vararg delimiter: String): Array = run { - this.split(*delimiter).map { it.trim() }.filterNot { it.isBlank() }.toTypedArray() +fun String.splitNotBlank(vararg delimiter: String, limit: Int = 0): Array = run { + this.split(*delimiter, limit = limit).map { it.trim() }.filterNot { it.isBlank() } + .toTypedArray() } fun String.splitNotBlank(regex: Regex, limit: Int = 0): Array = run {