猿问

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

我一直在尝试将其添加到我的个人不和谐机器人中,以使用 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: Good

bot: *Good

我是正则表达式的新手。我想这与那部分有关吗?


PS 欢迎提出任何改进正则表达式过滤效果的建议。


BIG阳
浏览 139回答 2
2回答

白衣非少年

正如评论中所说,类似if ( message.content.charAt(0).toUpperCase() !== message.content.charAt(0) )也适用于非 ASCII 字符,只是将大写字母的责任推迟到 Javascript。由于我不知道什么是不和谐机器人,我更愿意告诉您将第一个字母存储在变量中,以确保更高的性能和代码可读性const firstLetter = message.content.charAt(0);if ( firstLetter !== firstLetter ) {    //}

富国沪深

您的问题是这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")}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答