我有一个要求,需要对两个字符串之间不同的字符进行颜色编码。例如,如果两个字符串是abcd1234df
和abdc1256dg
,则位置3、4、7、8、10的第一个字符串中的字符需要显示为红色
我正在使用Jsf 2.0
和richfaces 4
,我需要这个解决方案在性能方面是可行的,因为这必须在大约50个字符串的循环中完成。这些字符串是包含50行的富数据表中的列。我应该在哪里调用javascript方法,以便富数据表中的一列获得颜色编码的
下面用javascript快速介绍一下。这将返回一个带有字母的<p>
标记,以及一个用类"different"标记的不同内容的跨度。
所以,如果你有像这样的css
.different{
/*color: red;*/
font-weight:bold;
}
然后你运行diffString('abcd1234df','abdc1256dg')
,得到这个:
abcd1234df
实际回报:<p>ab<span class='different'>c</span><span class='different'>d</span>12<span class='different'>3</span><span class='different'>4</span>d<span class='different'>f</span></p>
这是我的代码:
function diffString(originalString, compareString){
var returnString = "<p>";
for(var i=0, child; child=originalString[i]; i++){
if(child != compareString[i]){
returnString += "<span class='different'>" + child + "</span>";
}
else{
returnString += child;
}
}
returnString += "</p>";
return returnString;
}