我目前正在实施子字符串搜索。从算法中,我得到了每个元素的形式为[startPos, endPos]
的子串发生位置数组。在多个事件中突出显示字符串
例如(在JavaScript数组):
[[1,3], [8,10], [15,18]]
,并强调该字符串是:
ACGATCGATCGGATCGAGCGATCGAGCGATCGAT
我(使用<b>
在HTML)原始字符串要突出,所以它会突出显示或粗体显示位置1到3,然后8到10,然后15到18等(0索引)的字符串。
A<b>CGA</b>TCGA<b>TCG</b>GATC<b>GAGC</b>GATCGAGCGATCGAT
这是我曾尝试(JavaScript的):
function hilightAtPositions(text, posArray) {
var startPos, endPos;
var startTag = "<b>";
var endTag = "</b>";
var hilightedText = "";
for (var i = 0; i < posArray.length; i++) {
startPos = posArray[i][0];
endPos = posArray[i][1];
hilightedText = [text.slice(0, startPos), startTag, text.slice(startPos, endPos), endTag, text.slice(endPos)].join('');
}
return hilightedText;
}
却凸显距离posArray
范围(我知道这仍是不正确还)。那么,我该如何突出显示一个字符串多个发生的位置?谢谢。
不错,它的工作原理。但是,是否有必要对posArray进行排序?因为它保证了posArray的顺序不断增加。 – 2012-02-29 06:02:57
不,如果它已经排序,那么你可以删除'posArray = posArray.sort(function(a,b){return a [0] - b [0];});'' – Diego 2012-02-29 16:57:57