Java中高亮字符串中指定的关键字

本文主要提供一种在字符串中为给定关键字提供拼接高亮标签,该方法支持大小写忽略匹配
一下高亮演示网址:www.huhailong.vip

最终效果

效果展示1
在这里插入图片描述

实现代码

该方法主要用于在一串字符串中给指定的关键字加上高亮标签,以便前端进行高亮显示,其中的高亮字体和颜色可以根据自己的需求进行修改,下面只是提供核心的实现方法。

package test;

import java.util.HashMap;
import java.util.Map;

/**
 * 高亮字符串中的关键字
 * @author huhailong
 *
 */
public class HighlightKeyword {

	public static void main(String[] args) {
		String content = "使用Vite搭建Vue3+ElementUI-Plus项目过程,vue2迁移VuE3,更多内容请访问Vue官网";
		String keyword = "vue";
		String result = new HighlightKeyword().highlight2(content, keyword);
		System.out.println(result);
	}
	
	public String highlight2(String content, String keyword) {
		StringBuilder result = new StringBuilder();
		Map<Integer,String> map = new HashMap<>();
		int startIndex = 0;	//关键字起始索引
		int endIndex = 0;	//关键字结尾索引
		boolean isOpen = false;	//进入关键字匹配标志
		for(int i=0; i<content.length(); i++) {	//遍历原始字符串
			for(char keyChar : keyword.toCharArray()) {	//遍历关键字字符串
				if(Character.toLowerCase(content.charAt(i)) == Character.toLowerCase(keyChar)) {
					if(!isOpen) {	//匹配到关键字第一个字符相等后
						startIndex = i;	//将起始索引赋值为当前遍历原始字符串索引
						endIndex = i;	//将结尾索引也赋值为相同到当前索引
						isOpen = true;	//标记进入匹配模式
					}
					if(isOpen) {		//判断是否处于匹配模式
						endIndex++;		//将结尾索引自增
					}
					i = endIndex;		//将遍历原始字符串到索引定位到结尾索引,避免重复遍历
				}else {
					isOpen = false;		//如果不相等则结束匹配模式
				}
			}
			if(endIndex - startIndex == keyword.length()) {	//如果结束索引与起始索引相减到值为关键字到长度则表明匹配到完整到关键字
				//将起始索引和结束索引对应到高亮标签put到哈希表中,并且重置匹配标识
				map.put(startIndex, "<font style='color:red'>");
				map.put(endIndex, "</font>");
				isOpen = false;
				
			}
		}
		//遍历原始字符串,通过哈希表中存储到高亮索引,将标签拼接到原始字符串里面
		for(int i=0; i<content.length(); i++) {
			result.append(map.getOrDefault(i, "")).append(content.charAt(i));
		}
		//下面这一行是用来处理特殊情况,即关键字在最后到情况
		result.append(map.getOrDefault(content.length(), ""));
		return result.toString();
	}
}

运行结果

使用Vite搭建<font style='color:red'>Vue</font>3+ElementUI-Plus项目过程,<font style='color:red'>vue</font>2迁移<font style='color:red'>VuE</font>3,更多内容请访问<font style='color:red'>Vue</font>官网

演示网址:www.huhailong.vip,在该网址中通过搜索框来进行内容搜索即可查看高亮结果,(注意:搜索框只有PC端有,手机端搜索框已被隐藏,因此想查看演示请使用PC访问该网址

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@胡海龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值