我想从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。
答案 0 :(得分:2)
首先,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=
和-
之间的字符。
答案 1 :(得分:1)
一个主要问题是:
path.substring(path.lastIndexOf('-') + 1);
不会修改变量路径。原因是String是不可变的,对它们的任何更改都会在内部创建一个新字符串。如果要获取新的子字符串引用,则需要将其分配回path
:
path = path.substring(path.lastIndexOf('-') + 1);
现在您可以尝试更多子字符串选项
答案 2 :(得分: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
答案 3 :(得分:0)
这是解决方案,我希望这是解释性的:
public static void main(String[] argv) {
final String uriStr = "https://test.tech.com/public/pi?id=635106391297495358_0_280740c3f281419b954b309b45a41d77-M_M_0_56b6f628b90b4146abbdba1de9095657";
final URI uri = URI.create(uriStr);
final String query = uri.getQuery();
System.out.println(String.format("EXTRACTED QUERY [%s]", query));
final String part1 = query.substring(query.indexOf('=')+1, query.indexOf('-'));
System.out.println(String.format("EXTRACTED PART 1 [%s]", part1));
final String part2 = query.substring(query.indexOf('-')+1);
System.out.println(String.format("EXTRACTED PART 2 [%s]", part2));
}
} *
以下是输出: 提取的查询[id = 635106391297495358_0_280740c3f281419b954b309b45a41d77-M_M_0_56b6f628b90b4146abbdba1de9095657]
摘录第1部[635106391297495358_0_280740c3f281419b954b309b45a41d77]
摘录第2部分[M_M_0_56b6f628b90b4146abbdba1de9095657]