У меня есть список строк, по которым я хочу отсортировать их, используя последние цифры, присутствующие в строке, я пробовал это с использованием приведенного ниже кода, но по некоторым причинам, это выбор цифры, присутствующий перед последней цифрой, например,в строке "abc \ xyz 2 5" он выбирает 25 вместо 5, из-за чего неправильно сортирует. Могу ли я узнать, что не так в моем регулярном выражении?
Примечание. Мои последние две цифры всегда будут иметь метку времени, например 1571807700009 1571807700009.
Вот что я пробовал до сих пор.
public static void second() {
List<String> strings = Arrays.asList("abc\\xyz 2 5", "abc\\\\xyz 1 8", "abc\\\\xyz 1 9", "abc\\\\xyz 1 7", "abc\\\\xyz 1 3");
Collections.sort(strings, new Comparator<String>() {
public int compare(String o1, String o2) {
return (int) (extractInt(o1) - extractInt(o2));
}
Long extractInt(String s) {
String num = s.replaceAll("\\D", "");
return Long.parseLong(num);
}
});
System.out.println(strings);
}
Вывод
[abc\\xyz 1 3, abc\\xyz 1 7, abc\\xyz 1 8, abc\\xyz 1 9, abc\xyz 2 5]
Ожидаемый вывод
[abc\\xyz 1 3, abc\\xyz 2 5, abc\\xyz 1 7, abc\\xyz 1 8, abc\xyz 1 9]