我正在使用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"在他的字符串中间,而不是命令。
有没有有效的方法可以解决这个问题?
答案 0 :(得分:1)
if(!string.IsNullOrEmpty(input) && input.StartsWith("echo"))
{
Console.WriteLine(input);
}
您应该使用StartWith而不是Contains。最好首先检查string是null还是空。
答案 1 :(得分: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;
}
我希望它对你有用。 :)
答案 2 :(得分: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();