在 Kotlin 中按带有数字和特殊字符的字符串对列表进行排序?

问题描述

在我的 android 应用程序中,我有一个功能可以按名称文件列表进行排序。

问题: 列表不按首字母排序。

我尝试了什么:

1- 尝试按完整字符串(即文件名)排序。此方法以任意顺序返回列表。

sortedList = lisOfDocuments.sortedBy {it.getMFile_name().toString().trim()} as MutableList<FileModel>

2- 尝试按字符串的第一个字符(即文件名)排序。此方法根本不对列表进行排序。

 sortedList = lisOfDocuments.sortedBy {
                            "s(\\d+)".toRegex().matchEntire(
                                it.getMFile_name().toString().trim().first().toString()
                            )?.groups?.get(1)?.value?.toInt()
                        } as MutableList<FileModel>

一些示例文件名如下:

  • imgscaneer2021-02-24 17:1326
  • Sam-Ingram-cvonline-pago
  • trtDinosaurs 视觉百科全书 (PDfdrive)
  • 1file-example_PDF_1MB

所需输出 文件应按名称首字母升序排列。

顺序应该是

  • 1file-example_PDF_1MB
  • imgscaneer2021-02-24 17:1326
  • Sam-Ingram-cvonline-pago
  • trtDinosaurs 视觉百科全书 (PDfdrive)

有人可以帮我解决这个问题吗?任何帮助将不胜感激。

谢谢

解决方法

val Documents = listOf(Files("imgscaneer2021-02-24"),Files("Sam-Ingram-cvonline-pago"),Files("trtDinosaurs A Visual Encyclopedia ( PDFDrive )"),Files("1file-example_PDF_1MB"))

val sortedList = Documents.sortedBy { files -> files.name }
sortedList.forEach { s -> println(s.name) }



class Files(val name: String)

这只是一个想法。