2015-06-20 2 views
0

Я работаю над проектом textbot, где, если я ввожу текст в текстовое поле, бот выплевывает что-то в консоли, довольно просто. Тем не менее, я столкнулся с проблемой, которую я очень расстроен, и мне не удалось ее решить. Вероятно, это простое решение, но я не могу его найти.Условные утверждения с пользовательским вводом

Что я хочу делать, это то, что текстовое поле принимает команду, состоящую из пользовательского ввода + переменной, которую вводит пользователь. Что-то вроде этого:

case "input " + condition { 
    //do something with condition 
} 

Мой вопрос заключается в том, как сделать текстовое поле отличным от ввода и состояния? Я надеюсь, что этот вопрос не слишком трудно понять, но я не знаю, как еще объяснить: P

Edit: Пример:

Textbox вход:

"!locate p.actionValue" 

Тогда в зависимости от того, какое значение имеет значение для человека, это должно вернуть что-то вроде:

if (actionvalue = 32) { 
    //do something if actionvalue is 32 
} 

Но как я могу отличаться между командой и условием?

+1

Мне непонятно, что вы пытаетесь сделать. –

+0

@Denieru: Ваша проблема не ясна. Уточнить больше – AnkiiG

+0

Возможно, это поможет, если вы представите несколько примеров входов и условий. – JJJ

ответ

0

Вы можете использовать регулярное выражение для приведения в соответствие входных и получить условие:

var match; 
if (match = input.match(/^!locate (.*)/)) { 
    var condition = match[1]; 
    // do something with condition 
} 

Вы можете получить более общее:

var match = input.match(/^!(\S+)\s+(.*)/); 
if (match) { 
    var command = match[1]; 
    var arg = match[2]; 
    switch (command) { 
     case 'locate': 
      ... 
      break; 
    } 
} 
+0

Не могли бы вы подробнее рассказать о вводе input в строке 1 вашего кода? Я никогда не видел эти символы, используемые в Javascript, и я очень смущен, что с ними делать. – Denieru

+0

Узнайте о регулярных выражениях на regular-expression.info. – Barmar

+0

Так что я сначала ищу матч с «! », а затем поиск матча с номером? И хранить их в массиве? – Denieru

0

Вы можете разделить текст на «входе», а затем вы получите команду

// array separated by 'input ' 
var command = textbox.split('input '); 
// here you got your command: command[0] 

, конечно, вы должны подтвердить, что это на самом деле имеет 'input ', и что происходит в тех случаях, как 'input input '

Смежные вопросы