You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js实现重复句子高亮功能遇到问题求助

文本域重复句子高亮修复方案

原代码存在的问题

  • 仅用.分割句子,无法适配!、?等其他句末标点,还会丢失原句的标点符号
  • 逻辑只标记后续重复的句子,第一次出现的重复句不会被高亮
  • 遇到连续标点时会生成空字符串,导致误判

修正后的代码

highlightRepeated(str) {
  // 匹配完整句子,支持.!?结尾并保留原标点
  const sentenceRegex = /([^.!?]+[.!?])/g;
  let sentences = str.match(sentenceRegex) || [];
  // 存储各句子的出现次数
  const sentenceCount = {};

  // 第一次遍历统计所有句子的出现次数
  sentences.forEach(sentence => {
    const trimmedSent = sentence.trim();
    sentenceCount[trimmedSent] = (sentenceCount[trimmedSent] || 0) + 1;
  });

  // 第二次遍历标记所有重复出现的句子
  sentences = sentences.map(sentence => {
    const trimmedSent = sentence.trim();
    return sentenceCount[trimmedSent] > 1 ? `<mark>${sentence}</mark>` : sentence;
  });

  // 拼接回原文本格式
  return sentences.join('');
}

代码说明

  • 用正则表达式/([^.!?]+[.!?])/g精准匹配完整句子,保留原句的结尾标点,避免分割错误
  • 先统计每个句子的出现次数,确保所有重复出现的句子(包括第一次出现的实例)都被高亮
  • 处理空文本场景,避免匹配不到句子时出现报错

内容的提问来源于stack exchange,提问作者Saikat Sen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:55:27