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