WPS JS宏提取满足比率的字符区段

img

图中“-”和“+”代表良品,其他字母代表不良品
良品率=良品数 / 总数,;良品数:此区段中出现“-”的总次数,总数:此区段所有字符的总次数
需求:
1、想利用WPS JS宏从此区段中最大化挑选良品率 ≥70%的区段,并标记出来,如果存在2个或2个以上的区间需要标记出来首尾。
2、如果过程中有连续≥6个不良品数,需要标记红色。
3、2个连续≥6个不良品数之间如果<300片,那这区间不管良品、不良品均需标红
4、最后统计出来未标红区域的总数、良品数。请指教。

该回答引用ChatGPT
请参考下面的解决方案,如果有帮助,还请点击 “采纳” 感谢支持!
代码通过枚举字符串中的每个字符,如果该字符是良品,则将计数器加1并将结束位置更新到当前位置。如果该字符不是良品,则需要检查当前区段的良品率是否≥70%,如果是,则将该区段加入到结果数组中。最后,代码还需要检查字符串末尾的区段是否符合要求。

function markGoodSegment(str) {
  let segments = [];
  let start = 0;
  let end = 0;
  let goodCount = 0;
  for (let i = 0; i < str.length; i++) {
    if (str[i] === '-') {
      goodCount++;
      end = i;
    } else {
      if (goodCount / (end - start + 1) >= 0.7) {
        segments.push([start, end]);
      }
      start = i + 1;
      end = i + 1;
      goodCount = 0;
    }
  }
  if (goodCount / (end - start + 1) >= 0.7) {
    segments.push([start, end]);
  }
  return segments;
}

let str = 'A-B--C-D';
let segments = markGoodSegment(str);
console.log(segments); // [[0, 1], [3, 4]]


提供参考实例【JS宏综合示例-多维度筛选统计(带窗体)】,链接:https://blog.csdn.net/as604049322/article/details/127138015

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^