// 使用遍历将传入的字符串和关键字进行匹配,完成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 iList = new ArrayList();
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 iList) {
int one = iList.get(0);
int forint = 0;
List> Lists = new ArrayList>();
List listIndex = new ArrayList();
for (Integer integer : iList) {
if (integer == one) {
one = integer +1;
listIndex.add(integer);
}else {
Lists.add(listIndex);
listIndex = new ArrayList();
listIndex.add(integer);
one = integer +1;
}
forint = forint + 1;
}
Lists.add(listIndex);
System.out.println(Lists);
}
public void highLighterinsert(List> Lists, String title) {
System.out.println(title);
StringBuffer buffer = new StringBuffer(title);
int bufsiza = 0;
String startHtml="";
String endHtml="";
for (List 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冲击手电钻 双模式冲击钻墙壁打孔
日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔
日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔
日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔
日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔
结果:日立 冲击钻FDV16VB2 家用13MM冲击手电钻 双模式冲击钻墙壁打孔