在做一个检索结果查询条件部分高亮的时候,用到了在指定位置插入高亮代码的功能。 只要我们确定插入的开始索引,或者末尾索引,直接调用StringBuffer或者StringBuilder的insert方法即可。 下面是我的部分代码示例:
String split = "Metal";
String metalValue = "testMetalValue";
StringBuffer sb = new StringBuffer(metalValue);
int startFlag = metalValue.indexOf(split);
int endFlag = startFlag + split2.length();
sb.insert(endFlag,"");
sb.insert(startFlag,"");
metalValue = sb.toString();
sb.setLength(0);
我拿到的原始数据是String类型,String final不可变,所以我把他转为StringBuffer,当然你们可以转成StringBuilder,前者线程安全,后者不安全,效率高。 这时候metalValue就会高亮你查询的部分结果。
StringBuffer的构造函数的参数可以是int类型的数值,代表容量capacity,也可以是String类型,这样StringBuffer的内容就是String参数的值。setLength(0)是做了一个清空操作,防止后边继续追加或插入导致结果不对。insert()的两个参数分别是索引值和插入的值这里为什么我要先要以endFlag插入呢?因为如果我先从startFlag插入,会改变StringBuffer的长度,导致后面以endFlag插入错误。但是我如果先以endFlag插入,startFlag不会受到影响。
|