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");
}
我正在做一个简单的文件管理器,它必须在控制台上创建、修改、删除和重命名文件。这个想法是让用户输入类似:"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");
}