C# проверить, есть ли в строке определенное слово

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

Что я пробовал

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

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

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

И пользователь может напечатать "echo" в середине своей строки, а не как команду.

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

3 ответа

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

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

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

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;
}

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

Я понял, что вам нужно что-то подобное:

       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();
Другие вопросы по тегам