最近做公司项目时遇到一个问题。因为文本(字符串)中含有链接(url),需要对其进行过滤、替换、截取等操作。本人在网上找了好久也没发现比较靠谱和合适的。
就自己整理了一些方法。虽然代码简单但仅为记录方便以后复用。
代码如下:
注:url的正则表达式为
String reg = “(https?|ftp|file)?/[-A-Za-z0-9+&@#/%?=_|!:,.;]+[-A-Za-z0-9+&@#/%=_|]”;
/**
* 将url替换为空格
*
* @param str
* @return
*/
public static String urlReplace(String str) {
// 将url替换为空格
String resultStr = str.replaceAll("(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]",
"");
return resultStr;
}
/**
* 截取字符串中的最后一个网址
* @param str
* @return
*/
public static String urlSub(String str) {
// url正则表达式
String reg = "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";
String result = "";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
result = matcher.group();
//System.out.println("result=" + result);
}
return result;
}
/**
* 截取网址域名
* @param url
* @return
*/
public static String urlDomain(String urlStr) {
java.net.URL url;
try {
url = new java.net.URL(urlStr);
String host = url.getHost();// 获取主机名
return host;
} catch (MalformedURLException e) {
e.printStackTrace();
}
return urlStr;
}