From 74ec2e08935c55a499115522f2bf37462f4edb59 Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 18 Oct 2019 09:32:59 +0800 Subject: [PATCH] up --- app/build.gradle | 8 ++-- .../main/java/io/legado/app/help/BookHelp.kt | 7 ++-- .../java/io/legado/app/utils/DateUtils.kt | 30 --------------- .../io/legado/app/utils/StringExtensions.kt | 38 ------------------- 4 files changed, 9 insertions(+), 74 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/utils/DateUtils.kt diff --git a/app/build.gradle b/app/build.gradle index 192a428ad..1bb42e0eb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -86,13 +86,13 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" //androidX - implementation 'androidx.core:core-ktx:1.2.0-alpha04' + implementation 'androidx.core:core-ktx:1.2.0-beta01' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.media:media:1.1.0' implementation 'androidx.preference:preference:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' - implementation 'androidx.viewpager2:viewpager2:1.0.0-beta04' + implementation 'androidx.viewpager2:viewpager2:1.0.0-beta05' implementation 'com.google.android.material:material:1.1.0-beta01' implementation 'com.google.android:flexbox:1.1.0' @@ -102,7 +102,7 @@ dependencies { implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" //room - def room_version = '2.1.0' + def room_version = '2.2.0' implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" @@ -148,4 +148,6 @@ dependencies { //颜色选择 implementation 'com.jaredrummler:colorpicker:1.1.0' + implementation 'org.apache.commons:commons-lang3:3.9' + implementation 'org.apache.commons:commons-text:1.8' } diff --git a/app/src/main/java/io/legado/app/help/BookHelp.kt b/app/src/main/java/io/legado/app/help/BookHelp.kt index 6567dbb5b..ef1feedbe 100644 --- a/app/src/main/java/io/legado/app/help/BookHelp.kt +++ b/app/src/main/java/io/legado/app/help/BookHelp.kt @@ -6,7 +6,7 @@ import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.ReplaceRule import io.legado.app.utils.getPrefInt import io.legado.app.utils.getPrefString -import io.legado.app.utils.similarity +import org.apache.commons.text.similarity.JaccardSimilarity import java.io.File import kotlin.math.max import kotlin.math.min @@ -94,13 +94,14 @@ object BookHelp { if (chapters.size > index && title == chapters[index].title) { return index } - var similarity = 0F + var similarity = 0.0 var newIndex = index val start = max(index - 20, 0) val end = min(index + 20, chapters.lastIndex) + val jaccardSimilarity = JaccardSimilarity() if (start < end) { for (i in start..end) { - val s = title.similarity(chapters[i].title) + val s = jaccardSimilarity.apply(title, chapters[i].title) if (s > similarity) { similarity = s newIndex = i diff --git a/app/src/main/java/io/legado/app/utils/DateUtils.kt b/app/src/main/java/io/legado/app/utils/DateUtils.kt deleted file mode 100644 index dc1c81f62..000000000 --- a/app/src/main/java/io/legado/app/utils/DateUtils.kt +++ /dev/null @@ -1,30 +0,0 @@ -package io.legado.app.utils - -import android.annotation.SuppressLint -import java.text.ParseException -import java.text.SimpleDateFormat -import java.util.* - - -object DateUtils { - - /** - * @Description: 任意时间字符串转换成时间,无需指定解析模板 - * */ - @SuppressLint("SimpleDateFormat") - @Throws(ParseException::class) - fun parseStringToDate(date: String): Date { - val result: Date - var parse = date.replaceFirst("[0-9]{4}([^0-9]?)".toRegex(), "yyyy$1") - parse = parse.replaceFirst("^[0-9]{2}([^0-9]?)".toRegex(), "yy$1") - parse = parse.replaceFirst("([^0-9]?)[0-9]{1,2}([^0-9]?)".toRegex(), "$1MM$2") - parse = parse.replaceFirst("([^0-9]?)[0-9]{1,2}( ?)".toRegex(), "$1dd$2") - parse = parse.replaceFirst("( )[0-9]{1,2}([^0-9]?)".toRegex(), "$1HH$2") - parse = parse.replaceFirst("([^0-9]?)[0-9]{1,2}([^0-9]?)".toRegex(), "$1mm$2") - parse = parse.replaceFirst("([^0-9]?)[0-9]{1,2}([^0-9]?)".toRegex(), "$1ss$2") - val format = SimpleDateFormat(parse) - result = format.parse(date) - return result - } - -} \ No newline at end of file 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 f783373b3..987a0fce8 100644 --- a/app/src/main/java/io/legado/app/utils/StringExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/StringExtensions.kt @@ -1,7 +1,5 @@ package io.legado.app.utils -import kotlin.math.min - // import org.apache.commons.text.StringEscapeUtils fun String?.safeTrim() = if (this.isNullOrBlank()) null else this.trim() @@ -47,39 +45,3 @@ fun String.startWithIgnoreCase(start: String): Boolean { return if (this.isBlank()) false else startsWith(start, true) } -/** - * 计算相似度 - */ -fun String.similarity(target: String): Float { - //计算两个字符串的长度。 - val len1 = this.length - val len2 = target.length - //建立上面说的数组,比字符长度大一个空间 - val dif = Array(len1 + 1) { IntArray(len2 + 1) } - //赋初值,步骤B。 - for (a in 0..len1) { - dif[a][0] = a - } - for (a in 0..len2) { - dif[0][a] = a - } - //计算两个字符是否一样,计算左上的值 - var temp: Int - for (i in 1..len1) { - for (j in 1..len2) { - temp = if (this[i - 1] == target[j - 1]) { - 0 - } else { - 1 - } - //取三个值中最小的 - dif[i][j] = min( - min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1), - dif[i - 1][j] + 1 - ) - } - } - //计算相似度 - return 1 - dif[len1][len2].toFloat() / Math.max(length, target.length) -} -