java字符串包含连续数字,Java中包含数字的排序字符串
小編典典
嘗試使用此比較器,該比較器將刪除所有非數字字符,然后將其余字符與數字進行比較:
Collections.sort(strings, new Comparator() {
public int compare(String o1, String o2) {
return extractInt(o1) - extractInt(o2);
}
int extractInt(String s) {
String num = s.replaceAll("\\D", "");
// return 0 if no digits found
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
});
這是一個測試:
public static void main(String[] args) throws IOException {
List strings = Arrays.asList("room1.2", "foo1.1", "foo", "room2.3", "room100.999", "room10", "room.3");
Collections.sort(strings, new Comparator() {
public int compare(String o1, String o2) {
return extractInt(o1) - extractInt(o2);
}
int extractInt(String s) {
String num = s.replaceAll("\\D", "");
// return 0 if no digits found
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
});
System.out.println(strings);
}
輸出:
[foo, room1, room2, room10, room100]
當數字為小數時(也表示Java 8+樣式):
public static void main(String[] args) {
List strings = Arrays.asList("room1.2", "foo1.1", "room2.3", "room100.999", "room10", "room.3");
Collections.sort(strings, Comparator.comparing(Application::extractDouble));
System.out.println(strings);
}
static double extractDouble(String s) {
String num = s.replaceAll("[^\\d.]", "");
// return 0 if no digits found
return num.isEmpty() ? 0 : Double.parseDouble(num);
}
結果:
[foo, room.3, foo1.1, room1.2, room2.3, room10, room100.999]
2020-09-08
總結
以上是生活随笔為你收集整理的java字符串包含连续数字,Java中包含数字的排序字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机第二课堂教学计划,小学的第二课堂教
- 下一篇: vba 指定列后插入列_在不同的列左侧插