如何在整个消息中搜索一个单词,将该单词分解为一个数组,然后检查其他数组以查看它是不是匹配?

Posted

技术标签:

【中文标题】如何在整个消息中搜索一个单词,将该单词分解为一个数组,然后检查其他数组以查看它是不是匹配?【英文标题】:How can I search through an entire message for a word, break down that word into an array, and check other arrays to see if it matches?如何在整个消息中搜索一个单词,将该单词分解为一个数组,然后检查其他数组以查看它是否匹配? 【发布时间】:2021-05-21 20:08:04 【问题描述】:

好的,所以我为我的一个朋友创建了一个发送海绵表情符号的机器人,我试图让会员更难尝试和解决它。机器人的工作原理是,如果一条消息包含“海绵”这个词,它会发送一个海绵表情符号。我正在努力做到这一点,所以如果有人在单词中使用看起来像常规字符的字符,它仍然会检测到它并发送表情符号,这使它更具挑战性和乐趣。到目前为止,这就是我所做的:

//SPONGE MODULE

;
let s = ['Ⓢ','ⓢ','⒮','S','s','Ṡ','ṡ','Ṣ','ṣ','Ṥ','ṥ','Ṧ','ṧ','Ṩ','ṩ','Ś','ś','Ŝ','ŝ','Ş','ş','Š','š','Ș','ș','ȿ','ꜱ'];
let p = ['Ⓟ','ⓟ','⒫','℗','P','pvṔ','ṕ','Ṗ','ṗ','Ƥ','ƥ','Ᵽ','ℙ','Ƿ','ꟼ','℘'];
let o = ['Ⓞ','ⓞ','⒪','O','o','Ö','ö','Ṏ','ṏ','Ṍ','ṍ','Ṑ','ṑ','Ṓ','ṓ','Ȫ','ȫ','Ȭ','ȭ','Ȯ','ȯ','Ȱ','ȱ','Ǫ','ǫ','Ǭ','ǭ','Ọ','ọ','Ỏ','ỏ','Ố','ố','Ồ','ồ','Ổ','ổ','Ỗ','ỗ','Ộ','ộ','Ớ','ớ','Ờ','ờ','Ở','ở','Ỡ','ỡ','Ợ','ợ','Ơ','ơ','Ō','ō','Ŏ','ŏ','Ő','ő','Ò','ò','Ó','ó','Ô','ô','Õ','õ','Ǒ','ǒ','Ȍ','ȍ','Ȏ','ȏ','Ø','ø','Ǿ','ǿ','Ꝋ','⍥','⍤'];
let n = ['Ⓝ','ⓝ','⒩','N','n','Ṅ','ṅ','Ṇ','ṇ','Ṉ','ṉ','Ṋ','ṋ','Ń','ń','Ņ','ņ','Ň','ň','Ǹ','ǹ','Ñ','ñ','Ƞ','ƞ','Ŋ','ŋ','Ɲ','ʼn','NJ','Nj','nj','ȵ','ℕ'];
let g = ['Ⓖ','ⓖ','⒢','G','g','Ɠ','Ḡ','ḡ','Ĝ','ĝ','Ğ','ğ','Ġ','ġ','Ǥ','ǥ','Ǧ','ǧ','Ǵ','ℊ','⅁','ǵ','Ģ','ģ'];
let e = ['Ⓔ','ⓔ','⒠','E','e','Ḕ','ḕ','Ḗ','ḗ','Ḙ','ḙ','Ḛ','ḛ','Ḝ','ḝ','Ẹ','ẹ','Ẻ','ẻ','Ế','ế','Ẽ','ẽ','Ề','ề','Ể','ể','Ễ','ễ','Ệ','ệ','Ē','ē','Ĕ','ĕ','Ė','ė','Ę','ę','Ě','ě','È','è','É','é','Ê','ê','Ë','ë','Ȅ','ȅ','Ȩ','ȩ','Ȇ','ȇ','Ǝ','ⱻ','Ɇ','ɇ','Ə','ǝ','ℰ','ⱸ','ℯ','℮','ℇ','Ɛ'];

    for (var i = 0; i < spongeVariances.length; i++) 
        if (message.author.bot) return;
        if (message.content.toLowerCase().includes(spongeVariances[i])) 
            message.channel.send('????');
                break;
          
    
);

我正在尝试让它在每个数组中搜索该特定字符,如果找到,它会进入下一个,依此类推。

例如,如果有人输入:Here is a spoṄgḜ,它应该能够检测到这两个特殊字符并仍然发送海绵表情符号。

我该如何处理?

【问题讨论】:

【参考方案1】:

您可以尝试从输入字符串中删除变音符号,然后检查它是否包含字符串 sponge

在这里您可以找到不同的方法,如何删除重音/变音符号:Remove accents/diacritics in a string in javascript

【讨论】:

【参考方案2】:

这是工作示例

const word = 'spoṄgḜ'

const matrix = [
  ['Ⓢ', 'ⓢ', '⒮', 'S', 's', 'Ṡ', 'ṡ', 'Ṣ', 'ṣ', 'Ṥ', 'ṥ', 'Ṧ', 'ṧ', 'Ṩ', 'ṩ', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ș', 'ș', 'ȿ', 'ꜱ'],
  ['Ⓟ', 'ⓟ', '⒫', '℗', 'P', 'pvṔ', 'ṕ', 'Ṗ', 'ṗ', 'Ƥ', 'ƥ', 'Ᵽ', 'ℙ', 'Ƿ', 'ꟼ', '℘'],
  ['Ⓞ', 'ⓞ', '⒪', 'O', 'o', 'Ö', 'ö', 'Ṏ', 'ṏ', 'Ṍ', 'ṍ', 'Ṑ', 'ṑ', 'Ṓ', 'ṓ', 'Ȫ', 'ȫ', 'Ȭ', 'ȭ', 'Ȯ', 'ȯ', 'Ȱ', 'ȱ', 'Ǫ', 'ǫ', 'Ǭ', 'ǭ', 'Ọ', 'ọ', 'Ỏ', 'ỏ', 'Ố', 'ố', 'Ồ', 'ồ', 'Ổ', 'ổ', 'Ỗ', 'ỗ', 'Ộ', 'ộ', 'Ớ', 'ớ', 'Ờ', 'ờ', 'Ở', 'ở', 'Ỡ', 'ỡ', 'Ợ', 'ợ', 'Ơ', 'ơ', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Ò', 'ò', 'Ó', 'ó', 'Ô', 'ô', 'Õ', 'õ', 'Ǒ', 'ǒ', 'Ȍ', 'ȍ', 'Ȏ', 'ȏ', 'Ø', 'ø', 'Ǿ', 'ǿ', 'Ꝋ', '⍥', '⍤'],
  ['Ⓝ', 'ⓝ', '⒩', 'N', 'n', 'Ṅ', 'ṅ', 'Ṇ', 'ṇ', 'Ṉ', 'ṉ', 'Ṋ', 'ṋ', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'Ǹ', 'ǹ', 'Ñ', 'ñ', 'Ƞ', 'ƞ', 'Ŋ', 'ŋ', 'Ɲ', 'ʼn', 'NJ', 'Nj', 'nj', 'ȵ', 'ℕ'],
  ['Ⓖ', 'ⓖ', '⒢', 'G', 'g', 'Ɠ', 'Ḡ', 'ḡ', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ǥ', 'ǥ', 'Ǧ', 'ǧ', 'Ǵ', 'ℊ', '⅁', 'ǵ', 'Ģ', 'ģ'],
  ['Ⓔ', 'ⓔ', '⒠', 'E', 'e', 'Ḕ', 'ḕ', 'Ḗ', 'ḗ', 'Ḙ', 'ḙ', 'Ḛ', 'ḛ', 'Ḝ', 'ḝ', 'Ẹ', 'ẹ', 'Ẻ', 'ẻ', 'Ế', 'ế', 'Ẽ', 'ẽ', 'Ề', 'ề', 'Ể', 'ể', 'Ễ', 'ễ', 'Ệ', 'ệ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'È', 'è', 'É', 'é', 'Ê', 'ê', 'Ë', 'ë', 'Ȅ', 'ȅ', 'Ȩ', 'ȩ', 'Ȇ', 'ȇ', 'Ǝ', 'ⱻ', 'Ɇ', 'ɇ', 'Ə', 'ǝ', 'ℰ', 'ⱸ', 'ℯ', '℮', 'ℇ', 'Ɛ']
]

let isSponge = false

for (let i = 0; i < word.length; i++) 
  if (matrix[i].includes(word[i].toLowerCase()) || matrix[i].includes(word[i].toUpperCase())) 
    isSponge = true
   else 
    isSponge = false
  


console.log(isSponge)

【讨论】:

这在一定程度上有效。即使不包含单词,它也会接收每条消息。 好的,我现在看到问题了。您是否根据@mehowthe 制作了可以发布的替代版本?

以上是关于如何在整个消息中搜索一个单词,将该单词分解为一个数组,然后检查其他数组以查看它是不是匹配?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在 LIKE 查询 Laravel 中找到整个单词?

如何使用 Javascript 分解 HTML 字符串中的每个单词,然后在 HTML 中一个一个地显示每个单词? [复制]

在另一个表中搜索整个单词的表,如果找到则从结果中排除

通过 NSPredicate 在 NSString 中搜索“整个单词”

在文件中查找单词

如何搜索所有地图键c ++