我有四个不同扩展名的网址,我只想根据.扩展名阻止特定的网址。 我怎么能那样做呢? 我有使用 if 条件,但 if 不能满足我的愿望 我已经完成了这段代码
String line[]={"https://google.com","https://www.facebook.swf","http://www.hotstar.com","http://www.deathbycaptcha.com/user/login.js"};
for( int i=0;i<=line.length;i++){
String ln=line[i];
if(ln.endsWith(".css")){
break;
}
if(ln.endsWith(".js")){
}
if(ln.endsWith(".jpg")){
break;
}
if(ln.endsWith(".fla")){
break;
}
if(ln.endsWith(".swf")){
break
}
else{
System.out.println("urls :"+ln);
}
}
我怎样才能做到这一点 如果它在开关盒或其他地方,请帮助我。 提前致谢。
最佳答案
您可以使用正则表达式来实现此目的:
import java.util.regex.*;
public class TestRegex {
public static void main(String []args){
String[] line = new String[] {
"https://google.com",
"https://www.facebook.swf",
"http://www.hotstar.com",
"http://www.deathbycaptcha.com/user/login.js"
};
// End with .js or .swf
String regex = "(?<=(\\.js)|(\\.swf))$"; // You can create a builder to build a dynamic regex
Pattern re = Pattern.compile(regex);
for (String ln : line) {
Matcher m = re.matcher(ln);
if (m.find()) {
System.out.println(ln);
}
}
}
}
<小时/>
正如 @AxelH 指出的,我们需要检查每个字符串是否不以特定扩展名结尾。在这种情况下,我们只需要像这样更改正则表达式:(?<!(\\.js)|(\\.swf))$
我还将更新原始案例的正则表达式,让您看到相反的情况:(?<=(\\.js)|(\\.swf))$
在此处查看有关正向和负向回顾的更多信息:lookaround
关于java - 我如何阻止字符串数组中的特定网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860536/