2012-04-18 94 views
1

问题:如何从一行用户输入中读取多个命令/变量/修饰符?从一行用户输入中读取多个变量/命令

就像命令提示符那样的CLI一样,用户输入一行并从中读取并分配变量+修饰符。

E.G. A转换程序命令:

32 km to cm 

然后,它读取:

numToConvert = (32) 

然后

"km to cm" 

点conversionRate1

conversionRate1 = (0.621371192) 

乘32由转化率(0.621371192)

打印结果。

第二示例:

shutdown -h 

shutdown /? 

关闭被读取作为一个命令

-h修改它或/?修改它

回答

3

命令行上给出的任何东西,在程序名称之后,被分割为空格,并传递给args数组。

因此,考虑到:

class Program 
{ 
    static void Main(string[] args) 
    { 
     foreach (var a in args) 
     { 
      Console.WriteLine(a); 
     } 
    } 
} 

运行 “C:>的Program.exe转换FOO吧” 会产生线

convert 
foo 
to 
bar 

为了解析出语义,你会需要扫描args数组并查找修饰符。

如果你有严格的语法,你可以简单地看在预期位置

var numToConvert = Convert.toint32(args[4]) 

如果你允许灵活的语法会更复杂;您需要制定一系列解析规则来帮助您了解输入内容。

+0

谢谢!正是我在找的东西。我看到了与.split和数组类似的东西,但是我无法按照自己的意愿去做。我看了一遍,我似乎无法把我想要的东西放入所有正确的关键字。我理解解析,并且借口非正式的“通读”代码。在工作中午休息。 非常感谢! – user1342062 2012-04-18 17:51:25

0

此外,您可能希望查看一个旨在帮助解析和管理命令行参数的库。 Command Line Parser Library是一个不错的选择。

+0

谢谢你,我会检查它 – user1342062 2012-04-19 00:17:32