博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 命令行解析
阅读量:5266 次
发布时间:2019-06-14

本文共 2537 字,大约阅读时间需要 8 分钟。

public class CmdParser    {        private Dictionary
keyValuePairs = new Dictionary
(); static public CmdParser Parse(string[] args) { return new CmdParser(args.ToList()); } static public CmdParser Parse(List
args) { return new CmdParser(args); } private CmdParser(List
args) { if (args.Count <= 0) return; for(int keyIndex = 0; keyIndex < args.Count; keyIndex++) { var key = args[keyIndex]; if (!key.StartsWith("-")) continue; List
values = new List
(); for (int valueIndex = keyIndex + 1; valueIndex < args.Count; valueIndex++) { if (args[valueIndex].StartsWith("-")) break; values.Add(args[valueIndex]); } Command cmd = new Command(values); keyValuePairs.Add(key, cmd); } } public bool Has(string key) { return keyValuePairs.ContainsKey(key); } public Command this[string key] { get { return keyValuePairs[key]; } } }
public class Command    {        private List
mCmds; private int mIndex = 0; public Command(List
cmds) { this.mCmds = cmds; } public string First { get { mIndex = 0; return mCmds[mIndex]; } } public string Last { get { mIndex = mCmds.Count - 1; return mCmds[mIndex]; } } public string Get(int index) { if (index < mCmds.Count) { mIndex = index; return mCmds[mIndex]; } return null; } public bool HasNext { get { return mIndex < mCmds.Count - 1; } } public string Next { get { if (HasNext) return mCmds[mIndex++]; return null; } } public List
All { get { return mCmds; } } }

用法:

string cmd = "-hello,world,!,-Hi,man";string[] args = cmd.Split(",");var parser = CmdParser.Parse(args);//获取单个if (parser.Has("-Hello")){    parser["-Hello"].First;}//获取多个if (parser.Has("-Hello")){    parser["-Hello"].All;}//其它用法看代码,但基本没什么意义,预留而已.....

 

转载于:https://www.cnblogs.com/CodeSnippet/p/9429403.html

你可能感兴趣的文章
Python 数据类型
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>
【SVM】libsvm-python
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>