C#命令行解析工具
来源:互联网 发布:算法与数据结构pdf 编辑:程序博客网 时间:2024/05/20 04:11
我将告诉大家两个方法去获取C#输入的命令行参数。
第一个方法:
林选臣大神写的,他的方法很简单。
首先复制两个类到项目
public class CommandLineArgumentParser { private readonly List<CommandLineArgument> _arguments; public CommandLineArgumentParser(string[] args) { _arguments = new List<CommandLineArgument>(); for (var i = 0; i < args.Length; i++) { _arguments.Add(new CommandLineArgument(_arguments, i, args[i])); } } public static CommandLineArgumentParser Parse(string[] args) { return new CommandLineArgumentParser(args); } public CommandLineArgument Get(string argumentName) { return _arguments.FirstOrDefault(p => p == argumentName); } public IEnumerable<CommandLineArgument> GetEnumerator() { foreach (var temp in _arguments) { yield return temp; } } public bool Has(string argumentName) { return _arguments.Count(p => p == argumentName) > 0; } } public class CommandLineArgument { private readonly List<CommandLineArgument> _arguments; private readonly string _argumentText; private readonly int _index; internal CommandLineArgument(List<CommandLineArgument> args, int index, string argument) { _arguments = args; _index = index; _argumentText = argument; } public CommandLineArgument Next { get { if (_index < _arguments.Count - 1) { return _arguments[_index + 1]; } return null; } } public CommandLineArgument Previous { get { if (_index > 0) { return _arguments[_index - 1]; } return null; } } public CommandLineArgument Take() { return Next; } public IEnumerable<CommandLineArgument> Take(int count) { var list = new List<CommandLineArgument>(); var parent = this; for (var i = 0; i < count; i++) { var next = parent.Next; if (next == null) break; list.Add(next); parent = next; } return list; } public static implicit operator string(CommandLineArgument argument) { return argument?._argumentText; } public override string ToString() { return _argumentText; } }
然后在主函数
var arguments = CommandLineArgumentParser.Parse(args);
如果要
第二个方法需要使用 Nuget
Install-Package CommandLineParser
然后写一个工具类,代码是在申龙斌大神博客 抄的
class Options { // 短参数名称,长参数名称,是否是可选参数,默认值,帮助文本等 // 第一个参数-d [Option("d", "dir", Required = true, HelpText = "PGN Directory to read.")] public string PgnDir { get; set; } // 第二个参数-s [Option("s", "step", DefaultValue = 30, HelpText = "The maximum steps in PGN game to process.")] public int MaxStep { get; set; } [HelpOption] public string GetUsage() { // 应该可以根据前面的参数设置自动生成使用说明的,这里没有使用 var usage = new StringBuilder(); usage.AppendLine("OpeningBook 1.0"); usage.AppendLine("-d PgnDir [-s MaxSteps=30]"); return usage.ToString(); }}
主程序Main里使用
var options = new Options();if (Parser.Default.ParseArguments(args, options)){ string pgnDir = options.PgnDir; int maxStep = options.MaxStep; // 参数取出来了,可以随便使用了 // 本例中参数比较简单,稍微有点大材小用了}else {//转化失败 Console.WriteLine(options.GetUsage());}
如何使用参见:http://www.cnblogs.com/speeding/archive/2012/08/07/2626066.html
参见:http://www.cnblogs.com/linxuanchen/p/c-sharp-command-line-argument-parser.html
http://www.cnblogs.com/speeding/archive/2012/08/07/2626066.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
1 0
- C#命令行解析工具
- c 解析命令行实现
- linux c 命令行解析
- 命令行解析工具 Argparse介绍
- python命令行解析工具argparse
- python命令行解析工具Argparse
- python命令行解析工具Argparse
- Python 命令行解析工具 Argparse
- C/C++命令行参数解析
- C语言解析命令行参数
- C语言-解析命令行参数
- jq Linux下命令行json解析工具
- JCommander(命令行参数解析工具)
- Java命令行解析工具Apache CLI
- Python中的命令行解析工具介绍
- Python模块之命令行解析工具-argparse
- Python 命令行解析工具 Argparse介绍
- Python中的命令行解析工具介绍
- 设计模式:Bridge(桥接)模式
- java swing JscrollPanel
- 模拟IIC协议时序
- ArcGIS Geodatabase for DB2安装指南
- SpringMVC中的文件上传和下载
- C#命令行解析工具
- 模拟SPI协议时序
- java十大低级错误和常见注意点
- codeforces 779B Weird Rounding
- 一天一个知识点-枚举
- C# 复制列表
- 20170227心情总结
- 归并排序
- C#同步方法转异步