Java从url字符串中提取子字符串
我想从一个url字符串中提取子字符串。 这是网址:
https://test.tech.com/public/pi?id=635106391297495358_0_280740c3f281419b954b309b45a41d77-M_M_0_56b6f628b90b4146abbdba1de9095657
我想从id =开始提取
635106391297495358_0_280740c3f281419b954b309b45a41d77
直到破折号( - ),然后提取剩余的子字符串
M_M_0_56b6f628b90b4146abbdba1de9095657
请注意,确切的域名不是上面的那个,这只是一个例子。
有任何想法吗? 我很乐意感谢你的帮助。 谢谢。
更新:
这是我迄今为止所做的:
final URI uri = URI.create(result.getContents());
final String path = uri.getPath();
path.substring(path.lastIndexOf('-') + 1);
Log.e("EXTRACTED", "" + path);
但它只是公开/ pi。
首先, uri.getPath()
返回路径组件,但是你要找的是在?之后,所以你可能想要尝试的是uri.getQuery()
。
至于匹配:
Pattern p = Pattern.compile("id=(.+?)-");
Matcher m = p.matcher(uri.getQuery());
if (m.find()) {
System.out.println(m.group(1));
}
没有测试,但我认为它应该工作。 (.+?)
是一个捕获组,它试图匹配id=
和-
之间的字符。
一个主要问题是:
path.substring(path.lastIndexOf('-') + 1);
将不会修改可变路径。 原因是String是不可变的,任何对它们的改变都会在内部创建一个新的字符串。 如果你想获得新的子字符串引用,那么你需要将它分配回path
:
path = path.substring(path.lastIndexOf('-') + 1);
现在你可以尝试更多的子串选项
final URI uri = URI.create("https://test.tech.com/public/pi?id=635106391297495358_0_280740c3f281419b954b309b45a41d77-M_M_0_56b6f628b90b4146abbdba1de9095657");
String queryString = uri.getQuery();
String subString = queryString.substring(queryString.lastIndexOf('-') + 1);
System.out.println("EXTRACTED " + subString);
生产:
提取M_M_0_56b6f628b90b4146abbdba1de9095657
链接地址: http://www.djcxy.com/p/87017.html上一篇: Java extract substring from url string
下一篇: Perl regex to extract groups of digits from string of dot