簡體   English   中英

indexOf()的非大小寫敏感替換

[英]Non-case sensitive replacement for indexOf()

我正在為我使用的網站制作聊天機器人。 我正在添加禁止的單詞列表。 我已經讓它工作到某些用戶不允許發布鏈接的地方。 這是代碼。

if (text.indexOf("http://") > -1 || text.indexOf("https://") > -1) {
      if (isOwner || isStaff || user === "user") {}
      else if (!isSub) {
        moderation.timeout(name, 5);
        channel.sendMessage(name + ", only subs can post links.");
}

所以我所做的幾乎與以上內容重復,但沒有用戶限制並添加了新單詞。 這是代碼。

if (text.indexOf("http://") > -1 || text.indexOf("https://") > -1) {
      if (isOwner || isStaff || user === "user") {}
      else if (!isSub) {
        moderation.timeout(name, 5);
        channel.sendMessage(name + ", only subs can post links.");
  }
}
 if (text.indexOf("word1") > -1 || text.indexOf("word2") > -1 || text.indexOf("word3") > -1) {
      moderation.timeout(name, 5);
      channel.sendMessage(name + ", please don't be rude.");
}

鏈接刪除工作完全正常。 我不喜歡這個indexof對於單詞ban list是區分大小寫的。 使用不區分大小寫的函數有更好的方法嗎?

您需要規范化兩個字符串的大小寫,然后執行indexOf

function indexOfCaseInsenstive(a, b) {
  a = a.toLowerCase();
  b = b.toLowerCase();

  return a.indexOf(b);
}

創建單詞列表,為其創建正則表達式並針對傳入消息測試正則表達式:

const forbiddenWords = ['http://', 'word1', 'word2'];
const regexp = new RegExp(forbiddenWords.join('|'), 'i');

if(regexp.test(message)) {
    // you have a forbidden message.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM