2 回答
TA贡献1856条经验 获得超11个赞
一种选择是.split()将字符串放入一个数组中<span class="bold">,添加</span>到每个开始索引,附加到每个结束索引,然后.join()重新组合在一起:
const s = "Old Man's War"
const indices = [[0,0],[5,5],[11,11]]
let result = indices.reduce((str, [start,end]) => {
str[start] = `<span class="bold">${str[start]}`;
str[end] = `${str[end]}</span>`;
return str;
}, s.split("")).join("");
document.getElementById("result").innerHTML = result;
.bold { font-weight: bold; }
<div id="result"></div>
TA贡献1825条经验 获得超4个赞
你可以试试这样的
首先根据索引获取字符串切片
如果当前索引与
0th
索引第一个值匹配,则循环遍历字符串,然后将切片字符串从map
最后一个字符串添加到最后一个字符串,并通过索引第 0 个元素(结束索引)的第二个值增加索引否则通常将其附加到最终字符串
const s = "Old Man's War"
const indices = [[0,0],[2,4],[5,5],[11,11]]
const final = indices.map(([start,end])=> s.slice(start,end+1))
let output = ''
for(let i=0; i<s.length; i++){
if(indices[0][0] === i){
output += `<span class="bold">${final[0]}</span>`
i += indices[0][1]
indices.shift()
final.shift()
} else{
output += s[i]
}
}
document.getElementById("result").innerHTML = output;
.bold { font-weight: bold; }
<div id="result"></div>
添加回答
举报