我需要编写一个Java Comparator类来比较字符串,但有一个要求。如果正在比较的两个字符串在开头和结尾相同,并且不同之处是整数,则基于这些整数的数值进行比较。例如,我希望以下字符串按照它们显示的顺序结束:
- aaa
- bbb 3 ccc
- bbb 12 ccc
- ccc 11
- ddd
- eee 3 ddd jpeg2000 eee
- eee 12 ddd jpeg2000 eee
您可以看到,字符串中可能有其他整数,因此我不能只使用正则表达式来提取任何整数。我考虑从字符串开头开始遍历字符串,直到找到一个不匹配的位,然后从结尾开始遍历字符串,直到找到一个不匹配的位,然后将中间的位与正则表达式"[0-9]+ "进行比较,如果相似,则进行数字比较,否则进行字典比较。
有更好的方法吗?
更新 我认为我无法保证字符串中的其他数字(可能匹配)周围没有空格,或者不同的数字确实有空格。