为字符串中指定位置的字符添加特殊处理

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);

以上就是本文的全部内容,感谢阅读。