разделить строку на 3 части, первые 2 слова как слова и последние как смешанные слова

#javascript

#javascript

Вопрос:

Написать описательный заголовок было непросто, поэтому я подробнее объясню, что я пытаюсь здесь сделать. У меня есть скрипт чата, и на стороне сервера я создаю команды, которые пользователи могут вводить в чат и т. Д. / сообщить имя пользователя причина, Конечно, когда строка поступает на сервер, она выглядит примерно так: «/ сообщить Тиму за злоупотребление чатом» или «/ сообщить Джону, потому что он любит размещать раздражающие ссылки»Я могу захватить / сообщить, имя пользователя и 1-е слово причины, используя следующий код.

 var string = MessageString;
var temp = string.split(" ");
var CommandOne = temp[0];
var CommandTwo = temp[1];
var CommandThree = temp[2];
  

Проблема заключается в последней части строки, как я могу получить все для раздела причины, который находится после 2-го слова в строке? CommandOne покажет / report , CommandTwo покажет имя пользователя, но CommandThree покажет только первое слово по причине, а не всю причину.
Я также пытался использовать следующий код, но не могу заставить его работать правильно.

 var original = MessageString;
var result = original.substr(original.indexOf(" ")   1);
var CommandThree = result.substr(result.indexOf(" ", "")   1);  
  

Я просмотрел похожие сообщения здесь, но не смог найти ни одного, который бы это делал.

Ответ №1:

Просто используйте slice , чтобы получить все оставшиеся слова и объединить их обратно в строку:

 var string = MessageString;
var temp = string.split(" ");
var CommandOne = temp[0];
var CommandTwo = temp[1];
var CommandThree = temp.slice(2).join(" ");
  

Комментарии:

1. все они работали, но не могли нажать решаемую для всех из них, но я благодарен за вашу помощь, ребята, я некоторое время боролся с этим, но отложил это до последнего момента. Мне нравится этот сайт, потрясающий

Ответ №2:

Робин Зигмонд опередил меня. срез — это путь.

 const message = '/report Tim for abusing chat';
const words = message.split(' ');
const action = words[0];
const username = words[1];
const reason = words.slice(2).join(' ');
console.log('action:', action);
console.log('username:', username);
console.log('reason:', reason);  

Ответ №3:

Вы можете попробовать следующее

 var string = MessageString;
var temp = string.split(" ");

var CommandOne = temp.shift();
var CommandTwo = temp.shift();
var CommandThree = temp.join(" ");