命令行解析的规则以及Command Line Parser Library

编写命令行程序的时候,难免需要处理命令行解析的规则,MSDN的文章如下:http://msdn2.microsoft.com/en-us/library/aa243471.aspx

  • 参数用空格或者TAB进行分割。
  • 一个字符串若被两个双引号包含,则即使其中包含空格或TAB字符也会被视为一个参数。被引起来的字符串可以嵌入参数内。
  • 字符串中存在的双引号可以通过前置反斜杠进行转义。
  • 反斜杠会被解释成单个字符,除非后面紧接着一个双引号。
  • 如果偶数个反斜杠后面跟随一个双引号,每对反斜杠放一个反斜杠到参数中,双引号被解释为一个字符串界定符。
  • 如果奇数个反斜杠后面跟随一个双引号,每对反斜杠放一个反斜杠到argv数组中,双引号则被剩下的反斜杠转义放入到argv中,而不会作文字符串界定符。

这些规则的解析工作量也是不小,存在很多的相关的程序库来帮助我们解决这个问题,以前使用过 Mono项目提供的一个控制台程序辅助包GetOptions ,最近使用CodePlex上的一个库也非常不错,推荐给大家。这个函式库为.NET 应用程序提供解析命令列参数的能力,此外还允许你能显示定制化的帮助窗口。

项目地址:Command Line Parser Library

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LEo的网络日志

go语言坑之for range

3467
来自专栏杨龙飞前端

js中的this关键字,setTimeout(),setInterval()的执行过程

1305
来自专栏用户画像

H5中的标记方法

要使用H5标记,必须先进行如下的doctype声明,不区分大小写。Web浏览器通过判断文件开头有没有这个声明,来判断解析器和渲染类型是否切换到对应的H5模式。

801
来自专栏柠檬先生

Sass 基础(四)

当你想设置属性值的时候你可以使用字符串插入进来,另一个使用的用法是构建一个选择器。       @mixin generate-sizes($class,$s...

2357
来自专栏mySoul

TypeScript入坑

安装插件 https://github.com/Microsoft/TypeScript-Sublime-Plugin

1421
来自专栏大史住在大前端

javascript基础修炼(3)—What's this(下)

严格模式是ES5中添加的javascript的另一种运行模式,它可以禁止使用一些语法上不合理的部分,提高编译和运行速度,但语法要求也更为严格,使用use str...

1042
来自专栏Laoqi's Linux运维专列

正则三剑客-sed

与grep不同的是,当使用sed匹配字符串的时候如下: #sed -n ‘//‘p file             // 内填写需要匹配的字符串 例如: #s...

3045
来自专栏前端知识分享

第11天:JS中变量、字符串基础知识

js页面效果:轮播图、选项卡、地图、表单验证javascript是弱变量类型的语言,变量只需要用var来声明。而java要根据变 量类型来声明,

2783
来自专栏mySoul

DOM概述 选取文档元素

有些html标签会有name元素,区别于id,name属性的值不必是唯一的,多个元素可能存在相同的名字。

926
来自专栏IMWeb前端团队

vue.js笔记——指令

vue.js笔记——指令 跟ng的指令系统类似,vue也拥有一套指令系统。 所谓指令,其实本质就是在模板中出现的特殊标记,根据这些标记让框架知道需要对这里的 D...

2129

扫码关注云+社区