1

我正在使用 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”,而不是作为命令。

有没有有效的方法来解决这个问题?

4

3 回答 3

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

您应该使用 StartWith 而不是 Contains。最好先检查字符串是空还是空。

于 2016-10-25T19:20:20.930 回答
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();
于 2016-10-25T19:51:49.890 回答
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;
}

我希望它对你有用。:)

于 2016-10-25T19:50:00.373 回答