我需要对名称进行排序。这些名字有时会与数字一起统计,如果名字有,如果没有,我该如何对数字进行排序。目前我只对字母进行排序。
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/