我有一个字符串,并且必须使用数组中的开始/结束值在字符串中插入“ div”。
var str = "this is a simple string";
var places = [{
"start": 0,
"end": 3
},
{
"start": 9,
"end": 15
}];
function insert(places, str) {
// I tryed different approaches like this:
str = str.forEach(function(item, index) {
var start = item.start;
var end = item.end;
var newStr = '<div>'+str[start] + '</div>' + str.slice(end);
str = newStr;
});
$('.h').html(str);
// I need to get output str as:
// "<div>this</div> is a <div>simple</div> string"
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="h"></div>Run Code Online (Sandbox Code Playgroud)
如何使用splice或foreach函数呢?
您可以将其str用作单个字母的数组,并在需要的标记放置到字母的位置上循环应用。然后将所有项目连接在一起并返回字符串。
此解决方案适用于随机排序places。
function insert(places, str) {
return places.reduce(function (r, a) {
r[a.start] = '<div>' + r[a.start];
r[a.end] += '</div>';
return r;
}, str.split('')).join('');
}
var str = "this is a simple string",
places = [{ "start": 0, "end": 3 }, { "start": 10, "end": 15 }];
console.log(insert(places, str));Run Code Online (Sandbox Code Playgroud)
一种不减少的解决方案:
function insert(places, str) {
var r = str.split('');
places.forEach(function (a) {
r[a.start] = '<div>' + r[a.start];
r[a.end] += '</div>';
});
return r.join('');
}
var str = "this is a simple string",
places = [{ "start": 0, "end": 3 }, { "start": 10, "end": 15 }];
console.log(insert(places, str));Run Code Online (Sandbox Code Playgroud)
为了进一步阅读,您可以看一下这个答案,为什么一个字母数组可能比字符串函数更快:如何在JavaScript中的特定索引处替换字符?