在javascript中实现文本突出显示功能

时间:2019-05-30 16:30:33

标签: javascript arrays string sorting split

我有一个使用ExpressJS创建API的任务,该API将管理将在前端进行的突出显示。如果有人更新了一部分文本,我该如何跟踪突出显示的文本

我保留了突出显示文本的三个开始和结束字符。但是一个问题是,如果文本被编辑,我将如何管理这些字符。

const { textH, allText } = req.body;
let chars = { };
const enclosingChars = (hLighted, theString) => {
  let startingChars = null, endingChars = null;
  const index = theString.indexOf(hLighted);
  const last3 = index + hLighted.length;
  if ((index - 3) > -1) startingChars = theString.substring(index - 3, index);
  if ((index + 3) <= theString.length) endingChars = theString.substring(last3, last3 + 3);
  return { startingChars, endingChars };
};
if (allText.includes(textH)) {
  chars = enclosingChars(textH, allText);
}
chars.hLighted = textH;

如果突出显示的文本的一部分被编辑,我将删除存储中的突出显示。如果没有,我想检查我的开始和结束字符是否已更改,然后相应地进行更改。 但是如果索引更改,我不知道如何获取突出显示的文本

1 个答案:

答案 0 :(得分:0)

因此,如果您考虑跟踪突出显示的文本之外的编辑内容,将不会像您想的那样容易。

  1. 文本可能包含多个(类似于突出显示的)短语/单词
  2. 新插入的词组可能与突出显示的词组相似(就索引而言,如果在主要词组之前更糟)

因此,如果发生以上任何一种情况,索引将毫无用处,因为您可能会输入错误的文本

执行以下操作

a。突出显示时,请注意以下几点        1.内容:确保编辑是否在那里进行,您知道它并且可以采取相应措施

   2. keep track of the index range of your text even in case the shift is required (when the text before it is edited)

   3. take a screenshot of the entire article and store it so that when an edit to the article happens you know exactly which part is edited. this will require to check word by word and see if any word in the new text is different from the word of the same index in the old (screenshot). and you can shift the ranges of the highlighted text accordingly.

请记住突出显示的文本无害后进行的所有编辑。 希望这会有所帮助。