图中“-”和“+”代表良品,其他字母代表不良品
良品率=良品数 / 总数,;良品数:此区段中出现“-”的总次数,总数:此区段所有字符的总次数
需求:
1、想利用WPS JS宏从此区段中最大化挑选良品率 ≥70%的区段,并标记出来,如果存在2个或2个以上的区间需要标记出来首尾。
2、如果过程中有连续≥6个不良品数,需要标记红色。
3、2个连续≥6个不良品数之间如果<300片,那这区间不管良品、不良品均需标红
4、最后统计出来未标红区域的总数、良品数。请指教。
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
WPS JS宏提取满足比率的字符区段
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CodeBytes 2023-02-06 14:38关注
该回答引用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]]
解决 无用评论 打赏 举报
悬赏问题
- ¥15 网络科学导论,网络控制
- ¥100 安卓tv程序连接SQLSERVER2008问题
- ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd