StringExtensions

pull/32/head
Administrator 5 years ago
parent fd72b85815
commit 78db8194dc
  1. 2
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeByJSoup.kt
  2. 31
      app/src/main/java/io/legado/app/utils/StringExtensions.kt

@ -414,7 +414,7 @@ class AnalyzeByJSoup {
var replacement = "" var replacement = ""
init { init {
if (startWithIgnoreCase(ruleStr, "@CSS:")) { if (ruleStr.startWithIgnoreCase("@CSS:")) {
isCss = true isCss = true
elementsRule = ruleStr.substring(5).trim { it <= ' ' } elementsRule = ruleStr.substring(5).trim { it <= ' ' }
} else { } else {

@ -1,38 +1,33 @@
package io.legado.app.utils package io.legado.app.utils
import android.text.TextUtils
// import org.apache.commons.text.StringEscapeUtils // import org.apache.commons.text.StringEscapeUtils
fun String?.safeTrim() = if (this.isNullOrBlank()) null else this.trim() fun String?.safeTrim() = if (this.isNullOrBlank()) null else this.trim()
fun String.isAbsUrl() = this.startsWith("http://", true) fun String?.isAbsUrl() = if (this.isNullOrBlank()) false else this.startsWith("http://", true)
|| this.startsWith("https://", true) || this.startsWith("https://", true)
fun String.isJson(): Boolean = kotlin.run { fun String?.isJson(): Boolean = this?.run {
var result = false
if (!TextUtils.isEmpty(this)) {
val str = this.trim() val str = this.trim()
if (str.startsWith("{") && str.endsWith("}")) { when {
result = true str.startsWith("{") && str.endsWith("}") -> true
} else if (str.startsWith("[") && str.endsWith("]")) { str.startsWith("[") && str.endsWith("]") -> true
result = true else -> false
}
} }
return result } ?: false
}
fun String.htmlFormat(): String = if (TextUtils.isEmpty(this)) "" else fun String?.htmlFormat(): String = if (this.isNullOrBlank()) "" else
this.replace("(?i)<(br[\\s/]*|/*p.*?|/*div.*?)>".toRegex(), "\n")// 替换特定标签为换行符 this.replace("(?i)<(br[\\s/]*|/*p.*?|/*div.*?)>".toRegex(), "\n")// 替换特定标签为换行符
.replace("<[script>]*.*?>|&nbsp;".toRegex(), "")// 删除script标签对和空格转义符 .replace("<[script>]*.*?>|&nbsp;".toRegex(), "")// 删除script标签对和空格转义符
.replace("\\s*\\n+\\s*".toRegex(), "\n  ")// 移除空行,并增加段前缩进2个汉字 .replace("\\s*\\n+\\s*".toRegex(), "\n  ")// 移除空行,并增加段前缩进2个汉字
.replace("^[\\n\\s]+".toRegex(), "  ")//移除开头空行,并增加段前缩进2个汉字 .replace("^[\\n\\s]+".toRegex(), "  ")//移除开头空行,并增加段前缩进2个汉字
.replace("[\\n\\s]+$".toRegex(), "") //移除尾部空行 .replace("[\\n\\s]+$".toRegex(), "") //移除尾部空行
fun String.splitNotBlank(delim: String) = if (!this.contains(delim)) sequenceOf(this) else fun String?.splitNotBlank(delim: String) = this?.run {
if (!this.contains(delim)) sequenceOf(this) else
this.split(delim).asSequence().map { it.trim() }.filterNot { it.isBlank() } this.split(delim).asSequence().map { it.trim() }.filterNot { it.isBlank() }
}
fun startWithIgnoreCase(src: String?, obj: String?): Boolean { fun String?.startWithIgnoreCase(start: String): Boolean {
if (src == null || obj == null) return false return if (this.isNullOrBlank()) false else startsWith(start, true)
return if (obj.length > src.length) false else src.substring(0, obj.length).equals(obj, ignoreCase = true)
} }
Loading…
Cancel
Save