对于我自己设置的项目,我必须从URL中过滤掉10个字符的字符串。
例如:
https://www.amazon.de/gp/product/SOMETEXTHERE/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
我想过滤掉 SOMETEXTHERE 。 但是这个角色正在改变,所以我不能只说它总是一样的。
是否有任何现有功能?
答案 0 :(得分:4)
您可以使用正则表达式执行此任务:
final String string = "https://www.amazon.de/gp/product/B001VGASYA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1";
final String replacement = String.format("$1%s$3", "REPLACED");
final String result = string.replaceFirst("(.*product\\/)([^\\/]+)(.*)", replacement); // or .replaceAll()
System.out.println(result);
<强>故障:强>
(.*product\\/)([^\\/]+)(.*)
(.*product\\/)
.*
匹配任何字符(行终止符除外)*
量词 - 零和无限次之间的匹配,尽可能多次,根据需要回馈(贪婪)产品与字符产品字面匹配(区分大小写)\/
字面匹配字符/
(区分大小写)([^\\/]+)
[^\/]+
+
量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)\/
字面匹配字符/
(区分大小写)(.*)
.*
匹配任何字符(行终止符除外)*
量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)答案 1 :(得分:2)
如果您确定只有您提到的文字会发生变化,您可以将字符串拆分为&#34; /&#34;然后从列表中取出正确的字符串。
String URL = "https://www.amazon.de/gp/product/B001VGASYA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1";
String targetString = Arrays.asList(URL.split("/")).get(5);