java - 我如何阻止字符串数组中的特定网址

标签 java swing

我有四个不同扩展名的网址,我只想根据.扩展名阻止特定的网址。 我怎么能那样做呢? 我有使用 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/

相关文章:

java - 在 AsyncTask 中向 OSMDroid-Map 添加叠加项

java - 使用pushmatrix()函数的可点击3d形状来显示消息?

java - 显示 JFileChooser 时出现 NullPointerException

java - 如何设置JSpinner在值为-1时显示 "Infinite"?

java - 如何为 JTable 中的单元格着色?

使用变量的 Java Derby SQL 查询语句

java更新进度条

Java Swing JList

java - JTextPane 中嵌入式 swing 组件的插入符号位置

java - 与子类交互的调用和等待