regex - 用于排序的正则表达式
问题描述
您好,我需要帮助编写正则表达式来对房屋地址进行排序。
我有如下地址列表:val list = listOf("1", "5b", "1b", "1c", "1-10", "5", "5a", "10"))
排序后:结果应该是:
1, 1-10, 1b, 1c, 5, 5a, 5b, 10
解决方案
编辑以匹配您更改的问题:
fun sortMyThing(list: List<String>): List<String> {
val cmp = Comparator<String> { a, b ->
val intA = a.replace("(\\d+).*".toRegex(), "$1").toInt()
val intB = b.replace("(\\d+).*".toRegex(), "$1").toInt()
if (intA == intB) {
a.compareTo(b) //otherwise 1-10 goes after 1c
} else {
intA - intB
}
}
return list.sortedWith(cmp)
}
我得到结果:1, 1-10, 1b, 1c, 5, 5a, 5b, 10