根据起始位置和结束位置高亮显示字符串中的子字符串
Highlight a substring within a string based on starting and ending positions
给定一个字符串作为输入。假设"风扇叶片的前缘凸出"。点击按钮会将字符串传递给服务器,服务器会返回一个JSON对象
{
"result": [
{
"name": "blade",
"startPos": 12,
"endPos": 17
},
{
"name": "bulged",
"startPos": 44,
"endPos": 50
}
]
}
现在,我必须在输入字符串中突出显示"blade"answers"bulged"这两个单词,并将它们显示为输出。
输入:"风扇叶片的前缘凸起"
预期输出:风扇叶片的前缘凸出
我总是可以使用Regex匹配单词并突出显示它们,但它会突出显示输入字符串中出现的"blade"。
JavaScript中是否有任何方法可以根据位置识别字符串并突出显示它们。
我们将非常感谢你的帮助。
给我们我的Fiddle
使用JS字符串方法substring
查找字符串的相关部分。在这种情况下,由于必须为高亮显示添加标记,因此需要查找目标单词前后的子字符串。
然后使用<strong>
或类似的方法添加适当的高亮显示。请参阅下面的示例。
您需要在obj.result
上循环,同时考虑到添加像<strong>
这样的标记会更改后面单词的起始索引。您可以考虑突出显示字符串末尾附近的单词开头,以避免索引的复杂性。为此,请按startPos
降序对列表进行排序,如下所示。
var str = "the leading blade edges of the fan blade is bulged";
var obj = {
"result": [{
"name": "blade",
"startPos": 12,
"endPos": 17
}, {
"name": "bulged",
"startPos": 44,
"endPos": 50
}]
};
obj.result.sort(function(a, b) {
return b.startPos - a.startPos;
})
for (var i = 0; i < obj.result.length; i++) {
var start = obj.result[i].startPos,
end = obj.result[i].endPos,
before = str.substring(0, start),
after = str.substring(end),
middle = "<strong>" + obj.result[i].name + "</strong>";
str = before + middle + after;
}
document.getElementById("result").innerHTML = str;
<div id="result"></div>
我知道你正在寻找的可能是一种更结构化的方法,但我想最好的方法如下:
var str = "the leading blade edges of the fan blade is bulged";
for(var loc in obj.result){
str = str.substring(0,obj.result[loc].startPos+loc*17) + "<strong>" +
str.substring(obj.result[loc].startPos+loc*17,obj.result[loc].endPos+loc*17) + "</strong>" +
str.substring(obj.result[loc].endPos+loc*17);
}
相关文章:
- 根据另一个数组对数组进行排序,包括位置和字符串[ES6]
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 在从索引位置返回的字符串中查找空白
- 为什么我在 webpack 中需要 html 文件时会得到一个位置字符串
- 如何在JavaScript中根据字符的位置提取子字符串
- 在光标位置的文本区域中插入一个字符串,并进行一些更改
- 通过位置栏更改查询字符串,AJAX加载的菜单不会't在没有硬刷新的情况下重新填充
- 如何在字符串中的特定位置插入变量
- javaScript更改字符串char's的位置
- 替换元素中字符串的所有位置
- javascript/谷歌地图:将位置对象转换为字符串
- 存储字母表中每个字母在所需位置的字符串中出现的次数
- 如何将字符串(包含位置)转换为数组
- 匹配字符串中任意位置的 3 个字符的正则表达式
- 将谷歌地图居中到位置字符串
- 使用 jQuery 从字符串中获取倒数第二个字符的位置
- FF 13,IE 9:JSON 字符串化/地理位置对象
- 字符串中的多边形位置
- Javascript dom连接背景位置字符串/自动更新背景图像