2016-10-25 12 views
1

Я использую Cosmos, чтобы сделать простую ОС, чтобы немного разобраться. Если я хочу создать командную строку, называемую echo, что пользовательский вход echos, сначала мне нужно проверить, есть ли у входа «эхо» перед ним. Например, если я ввожу «мир приветствия эхо», я хочу, чтобы моя VMware выбрала «hello world», потому что echo - это моя новая командная строка.C# проверить, имеет ли строка определенное слово

То, что я пытался это

String input = Console.ReadLine(); 
if (input.Contains("echo")) { 
    Console.WriteLine(input} 
} 

Это не эффективно. Во-первых, VMware говорит

IndexOf(..., StringComparison) not fully supported yet! 

И пользователь может ввести «эхо» в середине его строки, а не как команда.

Есть ли эффективные способы решения этой проблемы?

+1

Вы можете использовать StartsWith? –

+2

Если вы не можете использовать 'IndexOf', я уверен, что вам не повезло, если вы просто не проверяете фактические символы' if (input [0] == 'e' && input [1] == 'c' .. ..) ' – juharr

ответ

1
if(!string.IsNullOrEmpty(input) && input.StartsWith("echo")) 
     { 
      Console.WriteLine(input); 
     } 

Вы должны использовать StartWith вместо Contains. Лучше сначала проверить, является ли строка пустой или пустой.

+0

с этим кодом в моем защищенном переопределении void Run(), VMware автоматически завершает работу, как только я ввожу что-либо без цикла. Ты знаешь почему? –

0

Вы можете разбить его, используя пробел, и проверить его с помощью переключателя.

String input = Console.ReadLine(); 
String[] input_splited = input.split(' '); 
switch(input_splited[0]){ 
    case 'echo': 
     String value = input_splited[1]; 
     Console.WriteLine(value); 
     break; 
    case 'other_cmd': 
     String other_value = input_splited[1]; 
     break; 
} 

Я надеюсь, что это работает для u. :)

0

Я полагаю, что вам нужно что-то вроде этого:

 const string command = "echo"; 
     var input = Console.ReadLine(); 

     if (input.IndexOf(command) != -1) 
     {     
      var index = input.IndexOf("echo");    
      var newInputInit = input.Substring(0, index); 
      var newInputEnd = input.Substring(index + command.Length); 
      var newInput = newInputInit + newInputEnd; 
      Console.WriteLine(newInput); 
     } 

     Console.ReadKey(); 

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

  • Нет связанных вопросов^_^