Мне нужно написать класс Java Comparator, который сравнивает строки, но с одной особенностью. Если две сравниваемые строки одинаковы в начале и конце строки, а средняя часть, которая отличается, является целым числом, то сравнение выполняется на основе числовых значений этих целых чисел. Например, я хочу, чтобы следующие строки располагались в том порядке, в котором они отображаются:
- aaa
< li>bbb 3 ccc
- bbb 12 ccc
- ccc 11
- ddd
- eee 3 ddd jpeg2000 eee
- eee 12 ddd jpeg2000 eee
Как Как видите, в строке могут быть и другие целые числа, поэтому я не могу просто использовать регулярные выражения для разделения любого целого числа. Я думаю просто пройтись по строкам с самого начала, пока не найду бит, который не совпадает, затем идти с конца, пока не найду бит, который не совпадает, а затем сравнить бит в середине с битом, который не совпадает. регулярное выражение «[0-9]+», и если оно сравнивается, то выполняется числовое сравнение, в противном случае — лексическое сравнение.
Есть ли лучший способ?< /p>
Обновить Я не думаю, что могу гарантировать, что другие числа в строке, те, которые могут совпадать, не имеют пробелов вокруг они или что те, которые отличаются, содержат пробелы.
Подробнее здесь:
https://stackoverflow.com/questions/104 ... n-a-number