[英]Parsing command line parameters string
這似乎是一個奇怪的問題,所以我將盡可能簡單地解釋它。 我正在用C#制作像CMD這樣的應用程序,我需要使用諸如“ ping”之類的命令。 我有一個switch語句,用於檢查輸入的命令並執行它。 這是:
switch (CommandName)
{
case "intro":
{
Console.WriteLine("intro");
CommandListen();
}
break;
case "clear":
{
CommandFolder.CmdClear cmd = new CommandFolder.CmdClear();
cmd.Execute();
CommandListen();
}
break;
case "ping":
{
CommandFolder.CmdPing cmd = new CommandFolder.CmdPing();
cmd.Execute(CommandName);
CommandListen();
}
break;
case "exit":
{
CommandFolder.CmdExit cmd = new CommandFolder.CmdExit();
cmd.Execute();
}
break;
default:
CommandListen();
break;
}
我不知道如何使它與命令的參數一起使用,即ping [ip / url] [extra]。 如果輸入“ ping”,它將起作用並執行命令,但是,如果輸入“ ping www.google.com”,它將出現我無法識別的命令錯誤。 我需要一種方法來檢查命令的第一部分,然后通過傳遞參數。
如果這含糊,我深表歉意,我只是不知道該怎么說。
您需要定義語法並為此編寫解析器。 正如@Lasse和@Dan在注釋中所建議的那樣,它可以很簡單,例如“一個命令及其參數由一個空格分隔”,這將使解析代碼的幼稚實現看起來像這樣:
string commandParts = CommandName.Split(" ");
string commandName = commandParts[0];
var arguments = commandParts.Skip(1).ToList();
var command = new SomeCommand(arguments);
此代碼在空格(“”)上分割輸入,將第一個結果作為命令,並將可選的其余部分作為參數(沒有輸入的參數將成為空arguments
列表)。
當然,您需要為沒有輸入命令時的錯誤處理添加代碼,或者如果您想支持輸入多個空格,請調整拆分代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.