首页 > 解决方案 > 用于排序的正则表达式

问题描述

您好,我需要帮助编写正则表达式来对房屋地址进行排序。

我有如下地址列表:val list = listOf("1", "5b", "1b", "1c", "1-10", "5", "5a", "10"))

排序后:结果应该是:

1, 1-10, 1b, 1c, 5, 5a, 5b, 10

标签: regexsortingkotlin

解决方案


编辑以匹配您更改的问题:

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


推荐阅读