【问题标题】:How do you increment an Int by 1 at position X in a URL String using Java?如何使用 Java 在 URL 字符串中的位置 X 处将 Int 增加 1?
【发布时间】:2020-05-12 06:31:40
【问题描述】:

在字符串中的位置 X 处将 Int 加 1 的最佳方法是什么? 例如,如果我试图在网络上抓取数百个包含单个数字的 URL,你如何从根 url 递增到更高的值。

  • www.scrapeme1.com(根 URL)
  • www.scrapeme2.com
  • ...
  • .....
  • www.scrapeme150.com

请在下面查看我的最佳代码尝试。

 static final Pattern NUMBER_PATTERN = Pattern.compile("\\d+");

 static String increment(String s) {
     Matcher m = NUMBER_PATTERN.matcher(s);
     if (!m.find())
         throw new NumberFormatException();
     String num = m.group();
     int inc = Integer.parseInt(num) + 1;
     String incStr = String.format("%0" + num.length() + "d", inc);
     return  m.replaceFirst(incStr);
 }

 @Test
 public static void testIncrementString() {
     System.out.println(increment("ABC123"));  // -> ABC124
     System.out.println(increment("Z00000"));  // -> Z00001
     String url = "https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-3.php";
     System.out.println(increment(url));  // -> https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-3.php
 }

【问题讨论】:

  • 如果你知道 url 的格式并且 url 有已知的固定部分,那么只需将 url 拆分为字符串,如果它的参数是你,那么如果它的 GET 方法只查找“?”如果它是 POST 方法,那么数据不在 url 中。还有像 lastIndexOf 这样的函数可以帮助您找到最后一次出现的“-”,然后再移动 1 个位置以获得第 3 个的位置。

标签: java regex string web-scraping scrape


【解决方案1】:

假设数字始终位于域之前,您可以采用正则表达式方法将输入 URL 分成第一部分,位于最终数字、数字本身和域之前。然后,循环迭代,拼凑出你想看到的 URL 输出。

String url = "https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-3.php";
String part1 = url.replaceAll("\\d+\\.[^.]+$", "");
String number = url.replaceAll("^.*(\\d+)\\.[^.]+$", "$1");
String part2 = url.replaceAll("^.*\\d+(\\.[^.]+)$", "$1");
int numStart = Integer.parseInt(number);

for (int i=0; i < 5; ++i) {
    String urlNew = part1 + (numStart + i) + part2;
    System.out.println(urlNew);
}

打印出来:

https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-3.php
https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-4.php
https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-5.php
https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-6.php
https://www.w3resource.com/csharp-exercises/basic/csharp-basic-exercise-7.php

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 2021-03-28
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多