当前位置: 首页 > 知识库问答 >
问题:

如何排序字符串如果里面含有数字?[副本]

孔鸿云
2023-03-14

如何对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
...

共有1个答案

柴英锐
2023-03-14

谢谢汤姆,我找到了解决问题的办法!在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(); 提前致谢。 问题答案: