C# - 在控制台应用程序中读取同一行上由空格分隔的 2 个字符串

C# - Read 2 strings on the same line separated by whitespace on a console application

我正在做一个简单的文件管理器,它必须在控制台上创建、修改、删除和重命名文件。这个想法是让用户输入类似:"create file.txt" 的内容,然后将创建文件。到目前为止,我只将它放在输入命令后询问文件名的位置,但我不希望那样。有什么想法吗?

Console.Write("What do you want to do?: "); //Carlos, si lees esto en tu busqueda por copiones, este codigo es mio. Saludos - Carlos Martinez.
        string line = Console.ReadLine();
        if (line == "exit") // Check String
        {
            Environment.Exit(0); 
        }
        if (line == "create")
        {
            Create(args); //Go to create
        }
        else
            Console.WriteLine("command does not exist\n");
        Main(args); 
    }

    static void Create(string[] args)
    {
        Console.Write("File name: ");
        string name = Console.ReadLine(); // Agarrar string
        using (StreamWriter writer =
    new StreamWriter(name, true))
            writer.Close();
        {
            Console.WriteLine("File created\n");
            Main(args); //Regresa
        }
    }

当您输入一行并点击 Enter 时,Console.ReadLine 的结果将与您输入的完全相同,即 create test.txt。您可以在 space:

上拆分字符串
string line = Console.ReadLine();
string split = line.Split(new [] {' '});
string command = split[0];
string name = split[1];

if (line == "create")
{
    Create(name);
}

Create 方法也应更新为接受单个 string 参数:

static void Create(string fileName)

请注意,上面的输入处理得不是很好:

  • 如果你只输入一个命令,它会失败,即create
  • 如果您输入带有 space 的文件名,即 create C:\Users\David Zych\test.txt
  • ,它将失败

如果我正确理解您的要求,那么您可以使用 string.StartsWith

解决问题
    Console.Write("What do you want to do?: ");
    string line = Console.ReadLine();
    if (line.StartsWith("exit"))
    {
        Environment.Exit(0); 
    }
    // Notice the space after the create word
    if (line.StartsWith("create ")) 
    {
        Create(line.Substring(6)); 
    }
    else
        Console.WriteLine("command does not exist\n");

当然应该将 Create 方法更改为只获取一个字符串,即文件名

static void Create(string fileName)
{
    if(fileName.Length > 0)
    {
        Console.Write("File name: ");
        using (StreamWriter writer = new StreamWriter(fileName, true))
           ;
        Console.WriteLine("File created");
    }
    else
        Console.WriteLine("No filename given");
}