Как сделать, чтобы диск-бот корректно автоматически использовал заглавные буквы первой буквы строки? регулярное выражение - PullRequest
0 голосов
/ 17 мая 2019

Я пытался добавить это к своему личному боту разногласий, чтобы заставить его реагировать предложением с исправленной заглавной буквой в качестве ответа, используя 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

Я новичок в регулярных выражениях. Это связано с этой частью, я полагаю?

P.S. Любые предложения по улучшению эффекта фильтра регулярного выражения приветствуются.

Ответы [ 2 ]

2 голосов
/ 17 мая 2019

Как сказано в комментарии, что-то вроде

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

также будет работать не для символов ASCII, просто откладывая ответственность за то, что заглавная буква для Javascript.

И поскольку я не имею ни малейшего представления о том, что такое дискорд-бот, я предпочитаю сказать, чтобы вы хранили первую букву в переменной, чтобы обеспечить более высокую производительность и читабельность кода

const firstLetter = message.content.charAt(0);
if ( firstLetter !== firstLetter ) {
    //
}
1 голос
/ 17 мая 2019

Ваша проблема в этом 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")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...