我有一个类似->
的文字Lorem Ipsum只是印刷和排版行业的虚拟文本。自1500年代以来,Lorem Ipsum一直是行业的标准伪文本,当时一位不知名的打印机拿起一个厨房,将其打乱成一本样本书。它不仅生存了五个世纪,而且在电子排版方面也取得了飞跃,但基本上没有改变。它在1960年代开始流行,发布了包含Lorem Ipsum段落的Letraset工作表,最近还发布了Aldus PageMaker等桌面发布软件,包括Lorem Ipsum的版本。
现在,我要突出显示文本的某些部分,因此我需要知道字符串的开始和结束偏移量。
说
it to make a
这是我要突出显示的文本,因此我需要此文本的偏移量;到目前为止,我尝试使用以下逻辑
var startoffset = $scope.original_doc_content.indexOf("it to make a ");
var endoffset = startoffset + string.length;
现在,如果it to make a
在给定文本中出现2次,我的问题就出现了:如果我想突出显示或想取第二个,如果它出现在第二个之前,则给我第一个偏移量,而不是我需要的第二个。那么我该如何解决呢?
答案 0 :(得分:0)
您可以通过简单的替换轻松地突出显示
。
window.onload = function(){
var str = document.getElementById("mypar").innerText;
var res = str.replace(/text/g, "<span class=\"highlight\">text</span>");
document.getElementById("mypar").innerHTML = res;
};
.highlight {
background-color: yellow;
}
<p id="mypar">This is my text where i want to highlight text or something</p>
或者您可以执行此操作以获取索引。这可能不是最好的解决方案,但它可以工作。反复遍历单词,直到找不到更多单词,并将值记录到控制台。
window.onload = function(){
var str = document.getElementById("mypar").innerText;
var indexFirstChar = 0;
var indexOfLastChar = 0;
var searchString = "text";
while(str.indexOf(searchString, indexFirstChar + 1) >= 0) {
indexFirstChar = str.indexOf(searchString, indexFirstChar + 1);
indexOfLastChar = indexFirstChar + searchString.length - 1;
console.log(indexFirstChar);
console.log(indexOfLastChar);
}
};
<p id="mypar">This is my text where i want to highlight text or something</p>