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();