检查字符串中的特殊字符

时间:2014-09-09 23:31:40

标签: javascript command character twitch

我正在为Twitch编写机器人。
现在,我想检查每条消息的特殊字符,并检测超过20%特殊字符的消息。

消息本身是变量var msg,如果消息中包含超过20%的特殊字符,则应使用命令超时用户。

这是它应该听的事件:

event.on("chat", function(user, channel, message) {
        var msg = message.toLowerCase();
        var args = msg.split(" ");

        console.log("<"+user.color+" | "+user.username+" | "+user.special+"> <"+channel+"> "+message)
    });

希望有人能帮助我。 这是我在JavaScript中的第一个或多或少的认真项目。

1 个答案:

答案 0 :(得分:1)

tl;dr Jsfiddle

好吧,我不知道你叫什么特殊字符,但是我们说这不是普通文本中出现的东西:

//Regular expression that matches everything except specified
var regexp = /[^a-z0-9 ',\.:!\?]/ig;
//Get number of matches
var num_match = message.match(regexp);
num_match = num_match!=null?num_match.length:0;
//Percentage of unwanted characters:
var perctent_spec;
if(num_match!=null)
   perctent_spec = (num_match/message.length)*100; 
else 
   percent_spec = 0;

当然,您可以循环使用两个数组:

var chars = message.split("");
var allowed = ["a", "b", "c" ... ];
var count = 0;
for(var i=0,l=chars.length; i<l; i++) {
    count++;
    for(var j=0,l2 = allowed.length; j<l2; j++) {
        if(chars[i]==allowed[i]) {
          count--;
          break;
        }
    }
}

但我强烈怀疑循环方法会比正则表达式慢,后者立即使用内置函数。

相关问题