Java实现文本中的关键字高亮,匹配所有长度
这个方法还不完整,后面想起来再看,直接放代码
public static String getHeightlightWord(String textWord, String key){
StringBuffer sb = new StringBuffer("");
String tempWord = textWord == null? "" : textWord.trim();
String tempKey = key == null? "" : key.trim();
if("".equals(tempWord) || "".equals(tempKey)){
return tempWord;
}else {
sb.append(tempWord);
}
String upperWord = tempWord.toUpperCase();
String upperKey = tempKey.toUpperCase();
if(!upperWord.contains(upperKey)){
return tempWord;
}else {
int keyLen = upperKey.length();
int thisMathIndex = 0;
List<Map<Integer, String>> matchList = new ArrayList<Map<Integer, String>>();
while((thisMathIndex = upperWord.indexOf(upperKey, thisMathIndex)) != -1){
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(thisMathIndex, tempWord.substring(thisMathIndex, thisMathIndex + keyLen));
matchList.add(map);
thisMathIndex += keyLen;
}
int thisKey = 0;
int keys = 0;
for(Map<Integer, String> map : matchList){
thisKey = getKey(map);
keys += thisKey;
sb.replace(thisKey, thisKey + keyLen, "<span style='background-color: yellow;'>"+map.get(thisKey)+"</span>");
keys += "<span style='background-color: yellow;'></span>".length();
}
}
return sb.toString();
}
private static int getKey(Map<Integer, String> obj){
Set<Integer> keySet = obj.keySet();
int firstKey = -1;
for(int key : keySet){
firstKey = key;
if(firstKey != -1){
break;
}
}
return firstKey;
}
以上代码可实现一次高亮,余下的问题就在于如何多次改变字符串的长度后能定位到需要更改的字符串(即多次高亮),打个卡先,有空再弄
Java实现文本中的关键字高亮,匹配所有长度的更多相关文章
- 【有人@我】Android中高亮变色显示文本中的关键字
应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助, ...
- Android中高亮变色显示文本中的关键字
应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助, ...
- Android 高亮显示文本中的关键字
总结:SpannableString用好,可以各种替换Span来操作各种内容 1.文本关键字高亮关键在于:SpannableString使用 主要就是通过关键字在文本的开始index,结束index来 ...
- java替换文本中所有的正则符号 Java问题通用解决代码
开发时遇到一个需求,需要对一段文本中的所有正则符号进行转义,不然使用split分割方法分割文本的话无效,想到用替换来做,全部替换正则符号为转义后的符号 贴java实现代码: 1.测试版 ...
- java统计文本中单词出现的个数
package com.java_Test; import java.io.File; import java.util.HashMap; import java.util.Iterator; imp ...
- Java内存模型中volatile关键字的作用
volatile作用总结: 1. 强制线程从公共内存中取得变量的值,而不是从线程的私有的本地内存中,volatile修饰的变量不具有原子性(修改一个变量的值不能同步). 2. 保证volatile修饰 ...
- 终于讲清楚了:深入理解Java 应用程序中 final 关键字的各种使用场景
在 Java 语言众多的关键字中,final 关键字无疑是被提到最多的,也是在面试过程中经常被问到的知识点.今天,老王查找了很多材料,最后终于收集了关于 final 关键字比较全的知识点.首先,fin ...
- android 如何让文本中某个关键字高亮显示?
TextView tv = (TextView) findViewById(R.id.hello);SpannableString s = new SpannableString(getResourc ...
- 关于java php go 中AES加解密秘钥长度问题
今天心血来朝,想用go把php中的一个小功能重写一下,但在解密aes加密的数据时碰到了个坑! php的mcrypt拓展(貌似php7.1版本以上不支持了)提供了aes的加解密: 而且php aes 的 ...
随机推荐
- 九十四:CMS系统之cms后台登录限制
装饰器,验证当前session中是否存在定义的user_id,没有就重定向到登录页 from flask import session, redirect, url_forfrom functools ...
- Mac下也能用抓包工具Fiddler
一直以来都是在Windows底下工作,对于抓包工具,自然而然当属Fiddler最最出色.不过Fiddler是在.Net runtime环境下运行的,所以想要在Mac下使用,有些困难. 在试过了Char ...
- Kafka offset机制
- 通过Xshell 执行压缩.zip文件出现unzip: command not found错误的解决办法
利用unzip命令解压缩的时候,出现 -bash: unzip: command not found 的错误. unzip——命令没有找到,其原因肯定是没有安装unzip. 利用一句命令就可以解决了. ...
- SpringBoot + Swagger2 自动生成API接口文档
spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于移动端 ...
- springboot-多环境测试
1.application.properties中添加spring.profiles.active=test 2.同级目录下创建application-dev.properties.applicati ...
- 截取铃声python代码
from pydub import AudioSegment file_name = "张杰 - 这就是爱.mp3" sound = AudioSegment.from_mp3(f ...
- springcloud 心得记录
1.nacos,模块启动无加载顺序 2.nacos,线上配置中心修改文件后,需重启模块
- 【转帖】刘备三顾茅庐,请Elasticsearch出山
刘备三顾茅庐,请Elasticsearch出山 2019-08-08 18:31 https://www.sohu.com/a/332454886_463994?spm=smpc.author.fd- ...
- scrapy生成json中文为ASCII码解决
修改pipelines.py 即可 修改内容如下: import json import codecs import os class BaiduNewsPipeline(object): #增加的 ...