0

有没有一种简单的方法来检查 JavaScript 中的字符串是否与某个事物匹配,例如:

假设您要检查具有以下内容的第一个单词:

/admin this is a message

然后用JS查找,/admin以便我可以在我的聊天窗口中引导消息??

4

4 回答 4

2

一种方法是使用 indexOf() 查看 /admin 是否位于 pos 0。

var msg = "/admin this is a message";
var n = msg.indexOf("/admin");

如果 n = 0,那么您知道 /admin 位于消息的开头。

如果消息中不存在该字符串,则 n 将等于 -1。

于 2013-01-30T00:05:01.823 回答
1

或者,

string.match(/^\/admin/)

根据http://jsperf.com/matching-initial-substringindexOf ,这比任何一个或slice在没有匹配的情况下快两倍,但在匹配时速度较慢。因此,如果您希望主要有不匹配,这会更快,它会出现。

于 2013-01-30T07:00:29.950 回答
0

你可以使用Array.slice(beg, end)

var message = '/admin this is a message';
if (message.slice(0, 6) === '/admin') {
  var adminMessage = message.slice(6).trim();
  // Now do something with the "adminMessage".
}
于 2013-01-30T00:07:51.123 回答
0

为此,您可以查找“特殊命令字符” /,如果找到,获取文本直到下一个空格/行尾,根据您的命令列表检查此内容,如果匹配,请执行一些特殊操作

var msg = "/admin this is a message", command, i;
if (msg.charAt(0) === '/') { // special
    i = msg.indexOf(' ', 1);
    i===-1 ? i = msg.length : i; // end of line if no space
    command = msg.slice(1, i); // command (this case "admin")
    if (command === 'admin') {
        msg = msg.slice(i+1); // rest of message
        // .. etc
    } /* else if (command === foo) {
    } */ else {
        // warn about unknown command
    }
} else {
    // treat as normal message
}
于 2013-01-30T00:09:48.517 回答