JavaScriptの文字列が特定のものと一致するかどうかを確認する簡単な方法はありますか?たとえば、次のようになります。
あなたが持っていた最初の単語をチェックしたいとしましょう:
/admin this is a message
次に、JSを使用して検索/admin
し、チャットウィンドウでメッセージを送信できるようにしますか?
JavaScriptの文字列が特定のものと一致するかどうかを確認する簡単な方法はありますか?たとえば、次のようになります。
あなたが持っていた最初の単語をチェックしたいとしましょう:
/admin this is a message
次に、JSを使用して検索/admin
し、チャットウィンドウでメッセージを送信できるようにしますか?
1つの方法は、indexOf()を使用して、/adminが位置0にあるかどうかを確認することです。
var msg = "/admin this is a message";
var n = msg.indexOf("/admin");
n = 0の場合、メッセージの先頭に/adminがあったことがわかります。
文字列がメッセージに存在しない場合、nは-1になります。
または、
string.match(/^\/admin/)
http://jsperf.com/matching-initial-substringによると、これはどちらindexOf
か、または一致がない場合よりも最大2倍高速ですslice
が、一致する場合は遅くなります。したがって、主に不一致があると予想される場合、これはより高速で、表示されます。
あなたが使用することができます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".
}
これを実現するには、「特別なコマンド文字」/
を探し、見つかった場合は次の空白/行末までテキストを取得し、コマンドのリストと照合して、一致するものがある場合は特別なアクションを実行します。
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
}