java String字符串判断是否相邻实现高亮提示处理

	// 使用遍历将传入的字符串和关键字进行匹配,完成title着色功能。
	@Test
	public void highLighter() {
		// String keyword,String title
		String keyword = "冲击钻";
		String title = "日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔";
		char[] keys = keyword.toCharArray();
		char[] titles = title.toCharArray();
		int forInt = 0;
		List<Integer> iList = new ArrayList<Integer>();
		for (char titlesChar : titles) {
			for (char keysChar : keys) {
				if (keysChar == titlesChar) {
					iList.add(forInt);
				}
			}
			forInt = forInt + 1;
		}
		System.out.println(iList);
		this.highLighterString(title, iList);
	}

	// 将字符串插入需要修饰的代码。
	public void highLighterString(String title, List<Integer> iList) {
		int one = iList.get(0);
		int forint = 0;
		List<List<Integer>> Lists = new ArrayList<List<Integer>>();
		List<Integer> listIndex = new ArrayList<Integer>();
		for (Integer integer : iList) {
			if (integer == one) {
				one = integer +1;
				listIndex.add(integer);
			}else {
				Lists.add(listIndex);
				listIndex = new ArrayList<Integer>();
				listIndex.add(integer);
				one = integer +1;
			}
			forint = forint + 1;
		}
		Lists.add(listIndex);
		System.out.println(Lists);
	}

	public void highLighterinsert(List<List<Integer>> Lists, String title) {
		System.out.println(title);
		StringBuffer buffer = new StringBuffer(title);
		int bufsiza = 0;
		String startHtml="<span style='color: red;'>";
		String endHtml="</span>";
		for (List<Integer> list : Lists) {
			int start = list.get(0);
			buffer.insert(bufsiza + start, startHtml);
			bufsiza = bufsiza + startHtml.length();
			int end = list.get(list.size() - 1);
			buffer.insert(bufsiza + end + 1, endHtml);
			bufsiza = bufsiza + endHtml.length();
			System.out.println(buffer);
		}
		System.out.println("结果:" + buffer);
	}

判断是否相邻的字符串,用来实现高亮。

[3, 4, 5, 21, 22, 25, 30, 31, 32]
正在循环几次啊?0
相等:3
正在循环几次啊?1
相等:4
正在循环几次啊?2
相等:5
正在循环几次啊?3
正在循环几次啊?4
相等:22
正在循环几次啊?5
正在循环几次啊?6
正在循环几次啊?7
相等:31
正在循环几次啊?8
相等:32
[[3, 4, 5], [21, 22], [25], [30, 31, 32]]

日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔
日立 <span style='color: red;'>冲击钻</span>FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔
日立 <span style='color: red;'>冲击钻</span>FDV16VB2 家用13MM<span style='color: red;'>冲击</span>手电钻 双模式冲击钻墙壁打孔
日立 <span style='color: red;'>冲击钻</span>FDV16VB2 家用13MM<span style='color: red;'>冲击</span>手电<span style='color: red;'>钻</span> 双模式冲击钻墙壁打孔
日立 <span style='color: red;'>冲击钻</span>FDV16VB2 家用13MM<span style='color: red;'>冲击</span>手电<span style='color: red;'>钻</span> 双模式<span style='color: red;'>冲击钻</span>墙壁打孔
结果:日立 <span style='color: red;'>冲击钻</span>FDV16VB2 家用13MM<span style='color: red;'>冲击</span>手电<span style='color: red;'>钻</span> 双模式<span style='color: red;'>冲击钻</span>墙壁打孔
 

转载于:https://my.oschina.net/u/143998/blog/822488

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值