com.feingto.cloud.kit.EscapeHtmlKit Maven / Gradle / Ivy
package com.feingto.cloud.kit;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Html格式化工具类
*
* @author longfei
*/
public class EscapeHtmlKit {
/**
* 去除html格式,提取文字信息
*
* @param html 包含html格式的字符串
* @return 去除html格式后的字符串
*/
public static String escapeHtml(String html) {
return escapeHtml(html, html.length(), "");
}
/**
* 去除html格式,提取文字信息,按长度截取字符串末端用...代替
*
* @param html 包含html格式的字符串
* @param length 提取长度,大于该长度用...代替
* @return 去除html格式后的字符串
*/
public static String escapeHtml(String html, int length) {
return escapeHtml(html, length, "...");
}
/**
* 去除html格式,提取文字信息,按长度截取字符串末端用ext的值代替
*
* @param html 包含html格式的字符串
* @param length 提取长度,大于该长度用ext的值代替
* @param ext 大于长度末端用ext的值代替
* @return 去除html格式后的字符串
*/
public static String escapeHtml(String html, int length, String ext) {
if (!StringUtils.hasText(html))
return "";
String str = html.replaceAll("?[^>]+>", "");// 剔出的标签
str = str.replaceAll("\\s*|\t|\r|\n", "");// 去除字符串中的空格,回车,换行符,制表符
return str.length() <= length ? str : str.substring(0, length) + ext;
}
/**
* 取得字符串里面的链接
*
* @param html 包含链接的字符串
* @return List 链接集合
*/
public static List parseUrl(String html) {
String regex;
List list = new ArrayList<>();
regex = "src=\"(.*?)\"|href=\"(.*?)\"";
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
//int begin = matcher.group().indexOf("\"") + 1;
int begin = matcher.group().lastIndexOf("/") + 1;
int end = matcher.group().lastIndexOf("\"");
list.add(matcher.group().substring(begin, end));
}
return list;
}
/**
* 取得字符串里面的图片链接
*
* @param html 包含图片链接的字符串
* @return List 图片链接集合
*/
public static List parseImgUrl(String html) {
String regex;
List list = new ArrayList<>();
regex = "img.*?src=\"(.*?)\"";
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
list.add(matcher.group(1));
}
return list;
}
/**
* emoji表情替换
*
* @param source 原字符串
* @param slipStr emoji表情替换成的字符串
* @return 过滤后的字符串
*/
public static String filterEmoji(String source, String slipStr) {
if (StringUtils.hasText(source)) {
return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
} else {
return source;
}
}
public static void main(String[] args) {
String str = "api/search/db(关键字查询)
请求示例
http://www.xxx.com/api/search/db?username=test&password=123456&keyword=a
请求方式
GET
请求参数
username: 用户名
password:密码
keyword:查询关键字
响应示例
统计结果网页
异常示例
{
"statusCode": 300,
"message": "参数不合法!",
"data": null
}
";
System.out.println("去除html格式,提取文字信息");
System.out.println(escapeHtml(str));
System.out.println(escapeHtml(str, 200));
System.out.println(escapeHtml(str, 200, "......"));
System.out.println("取得字符串里面的图片链接");
List list = parseImgUrl(str);
for (String s : list) {
System.out.println(s);
}
}
}