Java库验证URL并从字符串中剥离URL参数



我正在寻找一个Java库来验证URL并剥离某些参数。参数的顺序不重要

我使用正则表达式,但它是非常慢的。这个方法被调用了很多次,需要速度快。

Apache Commons Validator在commons-validator-1.3.1.jar中包含UrlValidator类。下面的方法用于验证VLCJ中给定的媒体资源定位器(MRL),它基本上是一个URL。然而,UrlValidator不工作的基于文件的URL(与file://方案)

/**
 * Get a media resource locator (MRL) with the following valid conditions: 
 * <br/>(1) a non-URI file link
 * <br/>(2) a URI link with "file:" scheme  
 * <br/>(3) a URI link with non-"file:" scheme
 * <br/>  
 * @param mrl media resource locator (MRL)
 * @return valid MRL; otherwise return null
 */
private String validateMRL(final String mrl){
    String media = null;
    String newURI = mrl;
    URI uri = new File(mrl.trim()).toURI();
    try {
        String f = new File(mrl).getAbsolutePath();
        Outils.debugMessage("URI:" + f);
        if (FilenameUtils.equalsNormalized(newURI, f)){
            //this is a actual file link
            newURI = uri.toURL().toString();
            newURI = Outils.replaceAllString(newURI, "file:", "file://");
            Outils.debugMessage("NEW URI: " + newURI);
            media = newURI;
        }
        else if (!mrl.contains("file:")) {
            //this is not a file link or "file:" link
            if (mrl != null && mrl.length() > 0){
                String[] schemes = {"http", "https", "rtsp", "rtp", "udp", "mms", "mmsh"};
                UrlValidator urlValidator = new UrlValidator(schemes);
                if (urlValidator.isValid(newURI))
                    media = mrl.trim();
            }
        }
        else {
            media = mrl;
        }
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Outils.debugMessage("CURRENT: " + media);       
    return media;
}

对不起,这个函数不做任何剥离参数(或者我要说"方案")。但是,使用replace()substring()可以轻松完成

最新更新