为了账号安全,请及时绑定邮箱和手机立即绑定

如何使不和谐机器人正确地自动大写字符串的第一个字母?正则表达式

如何使不和谐机器人正确地自动大写字符串的第一个字母?正则表达式

BIG阳 2021-06-02 04:02:29
我一直在尝试将其添加到我的个人不和谐机器人中,以使用 discord.js 使其对带有更正大写首字母的句子做出反应:if (message.content.charAt(0) !== /[A-Z0-9]/g && message.content !== 'lol') {    let UpfirstLetter = message.content.charAt(0).toUpperCase();    let restOfLetters = message.content.slice(1);    return message.channel.send(`*${UpfirstLetter}${restOfLetters}`);}但是尽管已经如此,它仍然将第一个字母大写。喜欢:me: Goodbot: *Good我是正则表达式的新手。我想这与那部分有关吗?PS 欢迎提出任何改进正则表达式过滤效果的建议。
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

正如评论中所说,类似


if ( message.content.charAt(0).toUpperCase() !== message.content.charAt(0) )

也适用于非 ASCII 字符,只是将大写字母的责任推迟到 Javascript。


由于我不知道什么是不和谐机器人,我更愿意告诉您将第一个字母存储在变量中,以确保更高的性能和代码可读性


const firstLetter = message.content.charAt(0);

if ( firstLetter !== firstLetter ) {

    //

}


查看完整回答
反对 回复 2021-06-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

您的问题是这message.content.charAt(0) !== /[A-Z0-9]/g是检查位置 0 处的字符是否等于正则表达式,而不是是否不匹配,因此它与'a' !== new RegExp()始终为真的相同。


你想要的是.test()函数,所以你可以这样写


!/[A-Z0-9]/g.test(message.content.charAt(0))


if (!/[A-Z0-9]/g.test('g')) {

  console.log('Not Uppercase')

}


if (!/[A-Z0-9]/g.test('G')) {

  console.log("Won't hit this")

}


查看完整回答
反对 回复 2021-06-03
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信