当前位置: 首页 > 面试题库 >

Java 对可能包含数字的字符串排序

苍元章
2023-03-14
问题内容

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

  • aaa
  • bbb 3 ccc
  • bbb 12 ccc
  • ccc 11
  • ddd
  • eee 3 ddd jpeg2000 eee
  • eee 12 ddd jpeg2000 eee

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

有没有更好的办法?

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


问题答案:

Alphanum算法

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



 类似资料:
  • 问题内容: 我有默认的字符串比较器(在SortedSet中)有问题。问题是默认比较器不能对包含数字的好的字符串进行排序,即:在集合中,我具有: 自然排序应该与上面类似,但是在集合中我有: 我知道为什么会这样,但是我不知道如何更改它。 问题答案: 尝试使用此比较器,该比较器将删除所有非数字字符,然后将其余字符与数字进行比较: 这是一个测试: 输出: 当数字为小数时(也表示Java 8+样式): 结果

  • 问题内容: 我想对具有nr的字符串进行排序。我怎么做? 可以说我的整数是 在主要我做class2.Sort(); 提前致谢。 问题答案:

  • 问题内容: 我正在尝试对字符串列( 包含数字 )进行排序。 您会看到Mysql的自然排序算法放在后面( 对于大多数应用程序来说都可以 ),但是我有独特的需求,因此我希望结果应该像这样排序。 仅使用SQL 是否可能,或者我必须在应用程序级别操纵结果集? 问题答案: 继续 假设 它始终为WORD_space_NUMBER,这应该可行: 使用POSITION查找空间,使用SUBSTRING捕获其后的数字

  • 我能够通过使用下面这个问题的注释提供的代码来解决这个问题。所有其他帖子都是有效的! 我使用的有用的东西来自第一个评论。虽然提供的所有示例代码似乎也是有效的!

  • 示例: 我们的名单上有5个名字:凯文、汉斯、弗里茨、汉·索罗、彼得 我现在想要所有在顶部包含“han”的名字。 因此排序后的列表如下所示: Hans,Han Solo,Kevin,Fritz,Peter 到目前为止我所尝试的: 什么都没有,因为我没有线索,但我已经谷歌了,没有找到任何东西。 从列表中删除/添加项目不是一个选项,因为我正在使用(ControlsFX组件)中的列表,其中每个项目都具有会