用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"; }