首页 > 解决方案 > 我在这里做错了什么?我正在尝试添加逗号以每三位数分组

问题描述

我正在尝试为 Twitch Bot 更改一些 Javascript。这段代码查找包含文本“(points)”的请求,然后将该文本替换为用户拥有的实际点数。目前,它正在获取用户的忠诚度积分并将其直接发布到聊天中,而无需在每组三位数字中添加逗号(例如,1,000,000 被发布为 1000000。)

默认情况下,代码如下所示:

if (message.match(/\(points\)/g)) {
    message = $.replace(message, '(points)', $.getUserPoints(event.getSender()));
}

我知道这是从消息中获取“(点)”,然后使用函数getUserPoints将其替换为请求用户拥有的点数。

我试过的是这个,它可能很接近,它可能不在附近,我还在学习 Javascript,所以请原谅我。

if (message.match(/\(points\)/g)) {
    var retrievedPoints = $.getUserPoints(event.getSender());
    retrievedPoints.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    message = $.replace(message, '(points)', retrievedPoints);
}

从我的角度来看,我将getUserPoints函数调用从替换函数中取出,将其声明为变量retrievedPoints,然后对这个新变量执行正则表达式,然后用这个新的逗号替换原始消息中的“(点)”点文本。

这正在通过机器人的 Javascript 错误检查(如果它检测到 Javascript 代码中的任何错误,机器人将不会运行),但它仍然返回“1000000”而不是“1,000,000”,就像我想要的那样。

我知道我.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");是正确的,因为这个机器人有几种提取相同数据的方法。这段代码特别是来自用户自定义命令的“customCommands.js”文件,还有另一个名为“pointsSystem.js”的文件,我已经设法用上面的代码整理出来,但这一个我正在努力上。另一个文件使用了一个简单的 return 语句,所以它只是一个附加上面代码的例子。

我不认为它是相关的,但它可能会有所帮助,功能getUserPoints似乎是这样的:

function getUserPoints(username) {
    return ($.inidb.exists('points', username.toLowerCase()) ? parseInt($.inidb.get('points', username.toLowerCase())) : 0);
};

标签: javascriptregex

解决方案


推荐阅读