Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-在控制台应用程序上读取同一行上由空格分隔的两个字符串_C#_Windows_Visual Studio_Console_Console Application - Fatal编程技术网

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

C#-在控制台应用程序上读取同一行上由空格分隔的两个字符串,c#,windows,visual-studio,console,console-application,C#,Windows,Visual Studio,Console,Console Application,我正在做一个简单的文件管理器,它必须在控制台上创建、修改、删除和重命名文件。这样做的目的是让用户输入“createfile.txt”这样的内容,然后创建文件。到目前为止,我只知道在键入命令后它会在哪里请求文件名,但我不希望这样。有什么想法吗 Console.Write("What do you want to do?: "); //Carlos, si lees esto en tu busqueda por copiones, este codigo es mio. Saludos - Car

我正在做一个简单的文件管理器,它必须在控制台上创建、修改、删除和重命名文件。这样做的目的是让用户输入“createfile.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
。可以在空间上拆分字符串:

string line = Console.ReadLine();
string split = line.Split(new [] {' '});
string command = split[0];
string name = split[1];

if (line == "create")
{
    Create(name);
}
Create
方法也应更新为接受单个
字符串
参数:

static void Create(string fileName)
请注意,上面的内容不能很好地处理输入:

  • 如果只输入命令,即
    create
  • 如果您输入一个带有空格的文件名,即
    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");
}

对于包含空格的路径,如
C:\Program Files\bla bla.txt
如何处理基于空格(“”)的字符串,然后将第一个数组元素与“exit”和“create”进行比较不使用路径,它将暂时位于同一文件夹中。是的!这似乎是一张好票。非常感谢。