字符串中多关键字标记输出html

字符串中多关键字标记输出html

方法一
利用replace方法,替换关键字达到相关目的(正则的利用)

//对关键字进行蓝色标记
// keywords为关键字的一个集合
String afterMark= "";
afterMark= originStr;
for(int i=0;i< keywords.length;i++){
if(originStr.contains(keywords[i])){
afterMark=  afterMark.replace(keywords[i],"<span style=\"color:#0000ff\">"+keywords[i]+"</span>");
}
}           
System.out.println("afterMark=="+afterMark);

方法二
这里用的是递归的方法,因为关键字它出现的地方一次次数都是不可预测的因素。
这里讲一下思路,一遍大家更好的理解
1、找出字符串中出现的关键字,这样就不用每次都找那么多没用的数据去匹配;
2、找出第一个关键字出现的地方并标记,以此类推,截取,然后再找出第一个关键字出现的地方,哝,你看这不就是需要递归了,然后方法应运而生;
3、找个合适的方法拼接输出就可以了,想到这个不由想到了字符串拼接神器–StringBuffer,有兴趣可以自己百度看一下和StringBuilder,String之间的暧昧关系。

// 核心方法(递归灵魂方法)
/**
*originStr 元字符串
*keywords  关键字集合
*afterMark 用来接收标记过后的字符串
*/
public StringBuffer addMark(String originStr,List<String> keywords,StringBuffer afterMark){
int index = originStr.length();
// 用来存放最先出现的关键字
Strign keyword ="" 
// 循环找出关键字(上述思路观点1)
for(int i=0;i<keywords.size();i++){
    String theKeyword = keywords[i];
    int theIndex = orginStr.indexof(theKeyword );
    if(theIndex == -1){ // 直接就过滤掉了没有用的关键字
    keywords.remove(theIndex );
    }else if(theIndex < index){
    index = theIndex; // 谁才是真正的排在前面,第一个关键字
    keyword = theKeyword;
    }
}
// ----for循环结束之后找到第一个关键字及其为止

if(index == originStr.length()){ // 找不到关键字直接拼接返回(原样输出)
afterMark.append(originStr);
}else{ //有关键字---递归喽
afterMark.append(originStr(0,index));
//添加标记标签
afterMark.append("<span style=\"color:#0000ff\">"+originStr(index,index+keyword.length()));
String originStr1 = originStr.subString(index+keyword.length(),originStr.length()+"</span>");
addMark(originStr1,keywords,afterMark);
}
return afterMark;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值