首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >总结一个频道列表

总结一个频道列表
EN

Stack Overflow用户
提问于 2021-12-28 04:57:58
回答 1查看 61关注 0票数 0

以下是我遇到的问题:

转这个字符串输入: "Ch 471: PRO BM R #5,Ch 472: PRO BM R #4,Ch 473: PRO BM R #3,Ch 481: PRO BM L #5,Ch 482: PRO BM L #4,Ch 484: PRO BM L #3“

到此字符串输出: Ch 471-473: PRO BM R #3-5 Ch 481-484: PRO BM L #3-5

我试图用JavaScript编写一个函数,从本质上通过x个逗号分隔的一系列通道过滤,然后以上面的格式对它们进行总结。在上面的例子中,有6个不同的通道有位置和单位。

决定/分组的因素是位置(在上面的例子中,PRO BM R和PRO BM L) --所以在一个位置上找出所有的通道和单位,然后总结这个信息。

以下是术语的详细信息:

  • 通道= Ch 471
  • Position= PRO BM R
  • Unit= #5

到目前为止,我尝试过的是,我假设我需要做的是使用几个循环来split()数据

  • ,首先由逗号
  • ,然后由:
  • ,然后由# sign

然后将数据推入三个不同的数组中。

Array

  • Position阵列
  1. 通道
  2. 单元阵列

然后对每个数组进行筛选,找出唯一的值,最大值,等等。不过,我就是不能解决这个问题。

欢迎任何指针、示例代码或任何类型的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-12-28 05:52:15

我认为使用regex可以帮助您更好地分离组件:Ch (?<channel>\d+): (?<position>(?:\w|\s)+) #(?<units>\d+)

下面是解析文本的起点:

代码语言:javascript
运行
复制
const regex = /Ch (?<channel>\d+): (?<position>(?:\w|\s)+) #(?<units>\d+)/g;

const inputString = "Ch 471: PRO BM R #5,Ch 472: PRO BM R #4,Ch 473: PRO BM R #3,Ch 481: PRO BM L #5,Ch 482: PRO BM L #4,Ch 484: PRO BM L #3";

const groups = {};

[...inputString.matchAll(regex)].forEach(a => (groups[a.groups.position] ||= []).push({ channel: +a.groups.channel, units: +a.groups.units }));

console.log(groups);

然后您可以操作这些数据来创建一个字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70502941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档