知优码

您现在的位置是:首页 > 开源项目 > 项目经验

项目经验

java在包含数字的字符串上排序

2021-01-13项目经验
java在包含数字的字符串上排序

一、概述

我需要编写一个比较字符串的Java Comparator类,但是要稍作改动。如果要比较的两个字符串在字符串的开头和结尾相同,并且中间不同的部分是整数,则根据这些整数的数值进行比较。例如,我希望以下字符串按显示顺序结束:

  • aa
  • bbb 3 ccc
  • bbb 12 ccc
  • 抄送11
  • ddd
  • eee 3 ddd jpeg2000 eee
  • eee 12 ddd jpeg2000 eee

如您所见,字符串中可能还有其他整数,所以我不能只使用正则表达式来分解任何整数。我正在考虑只是从头开始走弦直到找到不匹配的地方,然后从头开始走直到找到不匹配的地方,然后将中间的部分与琴弦进行比较。正则表达式“ [0-9] +”,如果比较,则进行数值比较,否则进行词法比较。

有没有更好的办法?

更新我认为我不能保证字符串中的其他数字(可能匹配的数字)周围没有空格,或者不同的数字确实具有空格。

二、详解

Alphanum算法 http://www.davekoelle.com/alphanum.html

“人们用不同于软件的数字对字符串进行排序。大多数排序算法会比较ASCII值,这会产生与人为逻辑不一致的排序。这是解决问题的方法。”