以下是我遇到的问题:
转这个字符串输入: "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) --所以在一个位置上找出所有的通道和单位,然后总结这个信息。
以下是术语的详细信息:
到目前为止,我尝试过的是,我假设我需要做的是使用几个循环来split()
数据
然后将数据推入三个不同的数组中。
Array
然后对每个数组进行筛选,找出唯一的值,最大值,等等。不过,我就是不能解决这个问题。
欢迎任何指针、示例代码或任何类型的帮助!
发布于 2021-12-28 05:52:15
我认为使用regex可以帮助您更好地分离组件:Ch (?<channel>\d+): (?<position>(?:\w|\s)+) #(?<units>\d+)
下面是解析文本的起点:
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);
然后您可以操作这些数据来创建一个字符串。
https://stackoverflow.com/questions/70502941
复制相似问题