【问题标题】:variable that represents all the numbers in js代表js中所有数字的变量
【发布时间】:2020-08-21 16:46:25
【问题描述】:

我需要一个代表任意数字的变量,我正在构建一个聊天机器人,对话的框架是对以数字方式表示的文档的请求,为此我需要这个变量,它可以检测到它是一个数字

if(message.body.includes(numberDocument)) {
    client.sendMessage(message.from, 'is the number of document: '+message.body);
}

numberDocument 代表我的变量号,但是不起作用

var numberDocument = Number

【问题讨论】:

  • 我不确定我是否明白你在问什么。听起来您希望人们能够说出!document 1234 之类的话,然后让您的机器人在服务器上查找文件 1234 并使用该文件的内容进行响应。如果是这样,为什么不检查消息是否以您理解的命令之一开始,然后根据您知道该命令的其余部分应该是的模式解析句子?
  • if(/^\d+$/.test(message.body))...
  • 我认为没有代表任何数字的值,但是您可以做许多其他事情:遍历 message.body 并使用 typeof value === "number 检查每个值",做一个像 /-?\d+\.?\d*/ 或 !Number.isNan(value) 之类的正则表达式
  • 我将收到的消息将是一个数字,正如您在 if 决定中看到的那样,那是因为在此之前还有其他对话分支,为了达到这一点,我必须检测到将发送给我的消息将包含一个数字

标签: javascript node.js variables chatbot


【解决方案1】:

您可以使用正则表达式 https://regexr.com/ 进行测试

if(message.body.match(/\d/g) {
        client.sendMessage(message.from, 'is the number of document: '+message.body);
}

这表示如果消息中有数字...,您还可以尝试检查消息是否包含除数字之外的任何内容返回错误

if(message.body.match(/\D/g) {
        client.sendMessage('invalid number');
}

【讨论】:

  • 这些都不适用于负数或十进制数。 \D 匹配 - 和 .和 \d 也不匹配。 Javascript 已内置检查以确定某事物是否为数字。建议人们使用其中一种会更好。
  • 文档#1.3 ?文档#-2,为什么文档会是小数或负数?
  • 问题是尝试匹配所有数字,而不是所有正整数。
【解决方案2】:

您可以使用正则表达式来检查消息中是否包含数字。

【讨论】:

  • 应该是某个特定的正则表达式还是任何一个都可以? (不是我投反对票,以防万一
  • 我不反对,但请提供示例代码。
  • 我将收到的消息将是一个数字,正如您在 if 决定中看到的那样,那是因为在此之前还有其他对话分支,为了达到这一点,我必须检测到将发送给我的消息将包含一个数字
猜你喜欢
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多