У меня есть модель, которая содержит некоторые поля.Я хочу отсортировать эту модель перед шоу в утилизаторе по отсортированному названию.мой заголовок содержит число в строку в некоторой части, например, в сеансе 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, это хорошо работает, но когда у меня есть заголовок в этом формате: сессия 1 - эпизод 22 и цифры между 0-999, этот алгоритм не будет работатьи у меня нет никакого вида в моем переработчике.пожалуйста, помогите мне исправить это?