Есть ли простой способ проверить, соответствует ли строка в JavaScript определенной вещи, например:

Допустим, вы хотели проверить первое слово, которое имело:

/admin this is a message

Затем с помощью JS найдите /admin, чтобы я мог направить сообщение в окне чата ??

0
Sir 30 Янв 2013 в 04:01

4 ответа

Лучший ответ

Одним из способов будет использование indexOf (), чтобы увидеть, находится ли / admin в положении 0.

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

Если n = 0, то вы знаете, что / admin был в начале сообщения.

Если строка не существует в сообщении, n будет равно -1.

2
AreYouSure 30 Янв 2013 в 00:05

Или,

string.match(/^\/admin/)

Согласно http://jsperf.com/matching-initial-substring, это до двух в разы быстрее, чем indexOf или slice в случае отсутствия совпадения, но медленнее в случае совпадения. Так что, если вы ожидаете, что в основном не совпадают, это будет быстрее, это будет выглядеть.

1
30 Янв 2013 в 07:12

Вы можете использовать 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".
}
0
maerics 30 Янв 2013 в 00:21

Чтобы достичь этого, вы можете найти «специальный символ команды» / и, если найден, получить текст до следующего пробела / конца строки, проверить это по списку команд и, если есть совпадение, сделать некоторые специальное действие

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
}
0
Paul S. 30 Янв 2013 в 00:09