【发布时间】: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