我目前正在實施子字符串搜索。從算法中,我得到了每個元素的形式爲[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