javascript - 正则表达式获取每个人的积分作为一个JS对象
问题描述
我有这个字符串:
Phantom_FR - 5 Points\n\nmineblox17,Dominus_Loading - 0 Points\n\ndavidroks528,beeks567,JohnDoe54631 - 4 Points\n\n\n\n **PLEASE ARCHIVE THIS CARD WHEN YOU ARE FINISHED WITH IT**
,
我需要它返回类似的东西:
{"5":["Phantom_FR], "0":[mineblox17, Dominus_Loading]}
...等等。我似乎无法弄清楚。
它以另一种语言编码为这种格式,因此无济于事。如何提取我需要的信息?
解决方案
该模式/([^\n][\w,]+) - (\d+) Points/g
似乎足以满足您的用例。这会将逗号分隔的用户名列表放在第一组中,将点放在第二组中。
请注意,假设这些点是预先分组的,并且它们之间不会发生冲突,否则会覆盖一个键。它还假设每个用户名组前面都有一个换行符或字符串的开头。
浏览器 JS:
const s = "Phantom_FR - 5 Points\n\nmineblox17,Dominus_Loading - 0 Points\n\ndavidroks528,beeks567,JohnDoe54631 - 4 Points\n\n\n\n **PLEASE ARCHIVE THIS CARD WHEN YOU ARE FINISHED WITH IT**";
const pattern = /([^\n][\w,]+) - (\d+) Points/g;
const usersByPoints = Object.fromEntries([...s.matchAll(pattern)]
.map(([, users, points]) => [points, users.split(",")]));
console.log(usersByPoints);
节点JS:
const s = "Phantom_FR - 5 Points\n\nmineblox17,Dominus_Loading - 0 Points\n\ndavidroks528,beeks567,JohnDoe54631 - 4 Points\n\n\n\n **PLEASE ARCHIVE THIS CARD WHEN YOU ARE FINISHED WITH IT**";
const pattern = /([^\n][\w,]+) - (\d+) Points/g;
const usersByPoints = {};
for (let m; m = pattern.exec(s); usersByPoints[m[2]] = m[1].split(","));
console.log(usersByPoints);
推荐阅读
- python - 我想标记 imaplib 看到的 gmail 消息
- python - 根据多个条件乘以熊猫数据框列
- javascript - 单击图像时触发 Javascript 事件处理程序
- javascript - 如何检查两个div是否相互接触?
- android - Android SDK 级别 30 使用 MediaRouter API 将视频投射到 Chromecast
- angular - 单元格样式不适用于在角度 Ag-grid 中枢轴为真的列定义
- wordpress - 允许访问 .htaccess 中的特定端点
- bash - 将 ts 文件转换为 js 时出现文件未找到错误
- mysql - MySQL 查询以在 Wordpress 中获取此数据
- java - 语音识别器无法离线工作(Android)