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

标签 java regex sorting

我需要对名称进行排序。这些名字有时会与数字一起统计,如果名字有,如果没有,我该如何对数字进行排序。目前我只对字母进行排序。

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

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

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

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

如果没有,我如何在 java 中进行。

提前致谢。

最佳答案

正则表达式似乎是合理的第一步。你知道Comparator吗?它定义了一个方法 int compare(T one, T two)它具有通常的 int-as-comparison-result 语义。一旦你有一个 Comparator 的实例,你可以将它传递给排序方法,例如 Collections.sort .

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

另一种方法是创建一个 TreeMap<Integer,String> ,并插入键值对,其中键是解析后的 int,值是原始 String。然后您可以迭代值集,它们将按键顺序出现。我可能会采用这种方法。

编辑 yytg 提出了一个很好的观点,那就是对于这样一个简单的解析,你可以在 "\\." 上进行拆分。 (限制为 2)并解析左侧。您也可以使用 String.indexOf找到点然后String.substring获取点左侧的字符串部分。

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

相关文章:

python - 使用 Python 脚本仅返回特定值

regex - sed regex可以模拟后向和前瞻吗?

javascript - 如何使用Javascript计算数组中的相邻数字?

java - 无法在intellij中将Spring mvc部署到tomcat

java - 适用于Android的Java应用程序中的错误

c# 匹配 img src ="*"类型 URLs 的正则表达式

.net - 添加节点后自动对TreeView进行排序

java - 如何在提交时删除 Intellij IDEA 中未使用的导入?

java - 一项 Activity 中的 appcompat 和 fragment

php - 从数据库输入后用 PHP 对 HTML 表进行排序