gpt4 book ai didi

android - 如何在kotlin中对包含数字的字符串进行排序

转载 作者:行者123 更新时间:2023-12-02 13:37:09 24 4
gpt4 key购买 nike

我有一个包含某些字段的模型。我想在回收站放映前通过分类标题对这种模型进行分类。我的标题在某些部分(如 session 1-第22集)中将数字包含在字符串中。我使用此算法对具有两位数的字符串类型的数字(如第22集)进行排序。

sortData.toObservable()
.sorted { o1, o2 ->
val pattern = Pattern.compile("\\d+")
val matcher = pattern.matcher(o1.title)
val matcher2 = pattern.matcher(o2.title)

if (matcher.find()) {
val isFind = matcher2.find()
val o1Num = matcher.group(0).toInt()

val o2Num = if (isFind) {
matcher2.group(0).toInt()
} else {
o1Num + 1
}

return@sorted o1Num - o2Num
} else {
return@sorted o1.title?.compareTo(o2.title ?: "") ?: 0
}
}
.toList()
.subscribeBy(
onError = {
it
},
onSuccess = {
sortData = it
}
)

这种算法的问题是,当我的标题仅包含第22集之类的简单格式,并且数字介于0-99之间时,效果很好,但是当我具有以下格式的标题时: session 1-第22集和数字介于0-999之间该算法无法正常工作,我的回收站也没有任何处理方法。可以帮我解决这个问题吗?

最佳答案

我找到了解决方案:)

我必须将第一部分替换为空格。然后我们可以从字符串中获取第二个部件号,并将其转换为int并对其进行排序。

 val matcher = pattern.matcher(o1.title?.replace("session 1", ""))
val matcher2 = pattern.matcher(o2.title?.replace("session 1", ""))

关于android - 如何在kotlin中对包含数字的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com