如何对Apache源文档名称(字符串)进行排序。我尝试了下面的代码与Jsoup,但没有返回预期的结果给出。如何解决这个问题?
public static void getApacheArchives() throws IOException{
String url = "https://archive.apache.org/dist/httpd/"; // or whatever goes here
Document document = Jsoup.connect(url).followRedirects(false).timeout(60000/*wait up to 60 sec for response*/).get();
Elements anchors = document.body().getAllElements().select("a");
Collections.sort(anchors, new Comparator<Element>() {
@Override
public int compare(Element e1, Element e2) {
return e1.text().compareTo(e2.text());
}
});
for (int i = 0; i < anchors.size(); i++) {
Element a = anchors.get(i);
if (
( a.text().matches( "(apache_)[1].[0-9].[0-9]{1,2}.(tar.gz)" ) )
||
( a.text().matches( "(httpd-)[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}.(tar.gz)") )
){
System.out.println(a.text());
}
}
}
但预期结果如下:
...
httpd-2.3.6.tar.gz
httpd-2.3.8.tar.gz
httpd-2.4.1.tar.gz
httpd-2.4.3.tar.gz
httpd-2.4.4.tar.gz
httpd-2.4.7.tar.gz
httpd-2.4.9.tar.gz
httpd-2.4.10.tar.gz
httpd-2.4.12.tar.gz
httpd-2.4.12.tar.gz
httpd-2.4.6.tar.gz
httpd-2.4.6.tar.gz
pd-2.4.16.tar.gz
httpd-2.4.17.tar.gz
httpd-2.4.18.tar.gz
httpd-2.4.20.tar.gz
...
谢谢汤姆,我找到了解决问题的办法!在Java中对包含number的字符串进行排序
一些修改:
Collections.sort(anchors, new Comparator<Element>() {
public int compare(Element o1, Element o2) {
return extractInt(o1.text()) - extractInt(o2.text());
}
int extractInt(String s) {
String num = s.replaceAll("\\D", "");
// return 0 if no digits found
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
});
如何防止或捕捉用户输入int或数字的字符串? 前任。 然后如果我输入Dave Har1234,我想在输入上捕获该数字,然后返回。
如何检查字符串是否包含数字?
问题内容: 我在排序包含整数的字符串时遇到问题。如果使用下面的代码,我将进行排序:1some,2some,20some,21some,3some,一些 但是我希望将其排序为:1some,2some,3some,20some,21some,一些 我怎样才能做到这一点? 谢谢! 问题答案: 这是有关如何执行此操作的独立示例(未特别优化): 输出量 说明 该示例使用一个常数来推断数字是否位于的起始位置。
问题内容: 我有一个包含数字的字符串列表,但找不到找到对它们进行排序的好方法。 例如,我得到这样的东西: 用的方法。 我知道我可能需要以某种方式提取数字,然后对列表进行排序,但是我不知道如何以最简单的方式进行操作。 问题答案: 也许您正在寻找人工排序(也称为自然排序): 产量 PS。我已经更改了答案,以使用Toothy的自然排序实现(在此处发表评论),因为它比我的原始答案快得多。 如果您希望使用浮
问题内容: 我有默认的字符串比较器(在SortedSet中)有问题。问题是默认比较器不能对包含数字的好的字符串进行排序,即:在集合中,我具有: 自然排序应该与上面类似,但是在集合中我有: 我知道为什么会这样,但是我不知道如何更改它。 问题答案: 尝试使用此比较器,该比较器将删除所有非数字字符,然后将其余字符与数字进行比较: 这是一个测试: 输出: 当数字为小数时(也表示Java 8+样式): 结果
问题内容: 我想对具有nr的字符串进行排序。我怎么做? 可以说我的整数是 在主要我做class2.Sort(); 提前致谢。 问题答案: