java - 我需要根据正则表达式模式对名称进行排序,我该怎么办?

原文 标签 java regex sorting

我需要对名称进行排序。这些名称有时带有数字的统计信息,如果名称有和没有,我该如何对数字进行排序。目前我仅对字母进行排序。

Ex: 3.Animal
    1.Box
    4.Monkey
    2.Tiger


但我需要在上面显示如下。

1.Box
2.Tiger
3.Animal
4.Monkey


我需要正则表达式吗?如果需要,我需要什么RE?

如果没有,我该如何在Java中进行处理。

提前致谢。

最佳答案

正则表达式当然似乎是一个合理的第一步。您了解Comparator吗?它定义了一种方法int compare(T one, T two),它具有通常的“作为比较结果”的语义。一旦有了Comparator的实例,就可以将其传递给排序方法,例如Collections.sort

因此,一种方法是编写一个Comparator<String>,其compare方法使用正则表达式提取两个字符串的数字部分,然后进行数值比较。问题在于,每次查看每个String时都要进行解析,这可能会变得很昂贵。

一种替代方法是创建一个TreeMap<Integer,String>,并插入键-值对,其中键是已解析的int,值是原始String。然后,您可以迭代设置的值,它们将按关键顺序列出。那可能就是我要采取的方法。

编辑yytg带来了一个好处,那就是对于这样一个简单的解析,您将在"\\."上进行拆分(限制为2)并解析左侧同样好。您也可以使用String.indexOf查找点,然后使用String.substring将String的部分保留在点的左侧。

关于java - 我需要根据正则表达式模式对名称进行排序,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8427412/

相关文章:

Python 正则表达式 [\d+]

c++ - 对无序集进行Qsort或Sort

java - 如何打印数组中所有出现的最大两个整数?

java - 为什么在 Java Applet 中使用 vector 坐标时多边形会变形?

java - 在 Windows 上的 Java 中检查文件是否为空的最有效方法

javascript - 正则表达式-验证带点的字母数字(强制性)

java - javaFX:错误合并排序动画结果

java - Google App Engine和Java版本

java - Haskell 数据类型到 Java(OO)

javascript - 使用正则表达式和 javascript 将 HTTP url 重写为 HTTPS