import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SafeSub {
public static void main(String[] args) {
String html="test来自<em>东方</em><font color='red'><font>你好</font></font>java";
List<String> not_sub_keywords=new ArrayList<>();
not_sub_keywords.add("<font>");
not_sub_keywords.add("<font color='red'>");
not_sub_keywords.add("</font>");
not_sub_keywords.add("<em>");
not_sub_keywords.add("</em>");
int safeLen=getSafeLen(html,16,not_sub_keywords);//getSafeLen(html,35,datas);
System.out.println(safeLen);
System.out.println(html.substring(0,safeLen));
}
//获取搜索结果摘要的安全截取长度,不会截取到not_sub_keywords标签内。
public static int getSafeLen(String html,int len, List<String> not_sub_keywords) {
int safeLen=len;
if(len>html.length()-1)
{
len=html.length()-1;
}
List<Integer> safeLengths=new ArrayList<Integer>();
for (String data : not_sub_keywords) {
int startIndex=len-data.length()-1;
int endIndex=len+data.length()+1;
if(startIndex<0)
{
startIndex=0;
}
if(endIndex>html.length()-1)
{
endIndex=html.length()-1;
}
String sub=html.substring(startIndex,endIndex);
int dataLen=sub.lastIndexOf(data);
if(dataLen!=-1)
{
int safeStartLen=startIndex+dataLen+data.length();
safeLengths.add(safeStartLen);
}
}
//System.out.println(safeLengths.size());
if(safeLengths.size()>0)
{
Collections.sort(safeLengths);
safeLen=safeLengths.get(safeLengths.size()-1);
}
return safeLen;
}
}
java 获取字符串安全截取长度
最新推荐文章于 2024-07-16 05:09:15 发布