2013-04-14 2 views
-2

предположит, что есть строка с именем «сообщение», и предположит, тип пользователя в консоли,C# читать и реагировать на текстовую строку

«! Мой список FB», но слова и «Список«FB» «может быть изменено. Но «! Мой» не изменится. Итак, я хочу сохранить текст типа пользователя. Только если пользователь использовал «! Мой» перед другими словами.

Итак, я не знаю, как это сделать с командой «если». Плз помоги мне.

если (сообщение == "! Мой"

ответ

4

ли вы имеете в виду что-то вроде этого?

if (message.StartsWith("!My ")) 
{ 
    // do something 
} 

Этот код работает в большинстве случаев. Однако, если вам необходимо разрешить ситуации например, Kshitij Mehta, вам, вероятно, будет лучше с помощью метода Split, анализирующего строку и сравнивающего первый объект массива с требуемой строкой. Когда вы разделили входную строку на array, вы просто сравните строки в типичном режиме (==), вероятно, не нужно использовать причудливые методы в этом сценарии.

Еще один вопрос «однако» - если ваша строка ввода длинна, расщепление может не быть лучшей идеей. В этом случае я бы, вероятно, использовал регулярные выражения для сравнения начала введенной строки.

Реализация зависит от ваших потребностей. Просто выберите то, что подходит вам лучше :)

+0

не будут работайте, если «сообщение» есть! «Мирон отправился на работу» –

+0

@KshitijMehta, правда, спасибо, что указали это. – walther

+1

не будет работать, если 'message' is!! My \ tname is Kshitij" :) –

2

Похоже, вы хотите принимать команды, а затем делать определенные вещи на основе этих команд. По-видимому, «команда» - это первое слово в тексте, введенном пользователем.

Таким образом, я бы split сообщение на пробельных и затем switch для первого слова:

var words = message.Split(); 
var command = words[0]; 

switch (command) { 
    case "!My": 
     // Do something 
     ... 
     break; 

    case "!SomethingElse": 
     // Do something else 
     ... 
     break; 
    ... 
} 

После этого, вы можете использовать words[1], чтобы получить «FB» и words[2], чтобы получить «список». Обязательно используйте words.Length, чтобы проверить, было ли задано требуемое количество параметров перед попыткой доступа к ним.

+0

Вы сделали свой день – Aimkiller

1

Класс String включает в себя множество статических методов, среди которых StartsWith().

так ваш, если заявление может быть просто

if(UserString.StartsWith("!My")) 
{ 
     // other conditional code here 
} 

Это не ясно из вашего вопроса, нужно ли включать случаи, когда пользователь "!My" перед набрав что-нибудь еще, но он/она не тип пространства сразу после ввода !My. Если вы хотите обработать код, если три символа "!My" следовало пространство, то (как это было предложено @Walther), добавьте пробел к тестовой строке в методе StartsWith()

if(UserString.StartsWith("!My ")) 
{ 
     // other conditional code here 
} 
+0

Ваш код имеет ту же самую проблему, что и мой оригинальный ответ :))) – walther

+0

@Walther. Ты прав. И пример кода кода op включает пробел ('if (message =="! My "') –

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