用String截取关键字前后指定范围的字符串

正确的代码:

String[] arr = Contentname.split("。");
for (String s : arr) {
if (s.indexOf(title) != -1) {
it.setS_content(s + "。");
}
}

思路:用句号把文章拆分到数组里,然后循环查找包含关键字(title)的部分,输出。当然,最后还加了一个句号结尾。

 


事实证明下面的代码是错误的 -_-!  当关键字后面的字符数小于90的时候,系统报错。


 for (Childszb it : childlist) {
if (StringUtils.isNotBlank(it.getS_content())) {
String Contentname = it.getS_content();
Contentname=Contentname.replaceAll(" ","");

String regEx_html="<[^>]+>"; //定义HTML标签的正则表达式 
Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE); 
Matcher m_html=p_html.matcher(Contentname); 
Contentname=m_html.replaceAll("");

if (Contentname.length()<120) { //如果文章总长度小于120字符,则显示全部内容。
it.setS_content(Contentname);
}else{
if (Contentname.indexOf(title)<30){ //如果关键字在字符串中的位置小于30
it.setS_content(Contentname.substring(0,Contentname.indexOf(title)+90)); //则显示0到所在位置往后90个字符
}else{ //否则(关键字所在位置大于30)
it.setS_content(Contentname.substring(Contentname.indexOf(title)-30,Contentname.indexOf(title)+90)); //则显示所在位置-30,到所在位置+90的范围。
}
}
}
}

return "searchlist";
}

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注