我正在寻找一个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()
可以轻松完成