为字符串中指定位置的字符添加特殊处理
- Published on
今天遇到一个关于JavaScript字符串的问题,我正好有尝试写博客的打算,所以就在此记录一下。
问题
给定一个字符串text
,以及多个目标子字符串的起始位置数组starts
和结束位置ends
,为所有的目标子字符串添加css样式,并返回处理后的字符串。(子字符串互不重合)
思路
- 由于需要根据下标查询对应的子字符串,因此不能直接操作字符串,会导致下标混乱;
- 将字符串转换成数组进行操作,将查询到的子字符串赋值给起始下标对应的数组位置,其余位置设为
''
,最后使用Array.join
方法返回字符串。
代码实现
const text = 'hello world!';
const starts = [0, 6];
const ends = [4, 10];
function replaceByIndexes(text, starts, ends) {
// 字符串转数组
const array = text.split('');
for (let i = 0; i < starts.length; i++) {
let string = '';
for (let j = starts[i]; j <= ends[i]; j++) {
string += array[j];
if (j !== starts[i]) {
array[j] = '';
}
}
string = `<strong>${string}</strong>`;
array[starts[i]] = string;
console.log(string);
}
return array.join('');
}
replaceByIndexes(text, starts, ends);
以上就是本文的全部内容,感谢阅读。