java parse

parse-cmd库由单个类ParseCmd.java组成,该类是“用于在Java应用程序中定义和解析命令行参数的Java类。” 该库托管在Google Code存档上 ,因此可以随时关闭 。 该JAR似乎也可以在GitHub上使用 。 这篇文章介绍了如何使用parse-cmd 0.0.93处理Java中的命令行参数。

parse-cmd Requirement Wiki列出了几种用于处理Java命令行参数的替代方法,包括本系列前面已介绍的替代方法。 在列出这些替代方案之后,它指出:“查看这些条目和其他条目,是时候尝试另一个解析器了。” 然后,文档继续描述parse-cmd试图满足的要求。

下一个(不完整的)代码清单演示了使用parse-cmd解析命令行参数的“定义”阶段。 [请注意,本文中的示例与本系列的前八篇文章中的示例相似。]

parse-cmd的“定义”阶段

/** String displayed where there is a problem processing arguments. */
private final static String USAGE ="java examples.dustin.commandline.parsecmd.Main --file <filePathAndName> [--verbose 1]";public static void main(final String[] arguments)
{final ParseCmd parseCmd= new ParseCmd.Builder().parm("--file", "").req().parm("--verbose", "0").help(USAGE).build();

代码清单演示了使用ParseCmd.Builder()和该类实例上可用的流利方法的预期命令行参数的定义。 每个方法依次返回同一Builder类的实例,以便可以将这些方法调用链接在一起,如上所示。 如上所示,用法/帮助字符串是手动构建的,并通过help(String)方法提供给Builder ,而不是由parse-cmd自动构建。

ParseCmd.Builder类的parm方法已重载,但是在此代码清单中,我使用了parm(String, String)方法parm(String, String)该方法接受参数的名称和该参数的“默认”值。 如果我仅向该方法提供一个字符串,该方法仅接受一个字符串,那么该参数的默认值将假定为“ 1”。 对于文件路径和名称参数,这可能导致parse-cmd假定参数类型错误。 通过显式提供默认的空字符串,parse-cmd可以将文件路径和名称的参数准确地视为可变长度字符串。

上面的代码中也定义了--verbose参数,并且还提供了默认值,因为如果没有提供参数,则隐式默认值“ 1”将使冗长性“ on”,并且不是默认值。使用Java进行命令行分析的系列文章中的任何较早的文章。

Builder一个链式返回实例上调用req()表示需要先前定义的参数( --file )。 另一个参数( --verbose )没有指定此参数,因此隐式默认为可选。

据我所知,使用parse-cmd为定义的命令行参数指定别名或同义词并不容易。 换句话说,我看不到告诉parse-cmd --file-f是相同的命令行参数的方法。 因此,在此示例中,我仅对参数--file--verbose使用带双连字符的“ long”版本。

有了本系列中以前的基于Java的命令行解析库,“解析”阶段紧随“定义”阶段。 尽管可以使用parse-cmd进行相同的转换,但广告且首选的方法是在“定义”阶段之后和“解析”阶段之前实施“验证”阶段。 此阶段使您可以查看在验证可用命令行参数期间是否发现任何错误,并在下一个(不完整的)代码清单中进行演示。

parse-cmd的“验证”阶段

final String errorString = parseCmd.validate(arguments);
if (!errorString.isEmpty())
{out.println("ERROR: " + errorString);
}

刚刚显示的代码清单演示了ParseCmd.validate(String[])方法的使用,该方法用于验证命令行参数是否与“定义”阶段中定义的预期参数匹配。 如果有任何意外结果,则返回非空字符串。 空的String被认为是一件好事,它表示“有效”命令行参数。

使用有效的参数,下一步可以“解析”那些命令行参数,如下面的单行代码清单所示。

使用parse-cmd进行“解析”阶段

final Map<String, String> parsedArguments = parseCmd.parse(arguments);

调用ParseCmd.parse(String[])是参数名称到参数值的Java Map<String, String>

通过简单地访问解析阶段返回的Map<String, String>即可实现parse-cmd的“询问”阶段。 可以通过参数名称查询地图的键,并且返回的值是与该参数名称关联的值。 请注意,这意味着所有参数,甚至是像--verbose类的“布尔”参数,都具有与之关联的值,而不是唯一需要的标志是否存在。 换句话说,-- --verbose在命令行上表示时必须后面跟一个值。 在下面的代码清单中演示了在这种情况下对两个预期参数的询问。

parse-cmd的“审讯”阶段

final Map<String, String> parsedArguments = parseCmd.parse(arguments);
final String filePathAndName = parsedArguments.get("--file");out.println("The path/name of the file is '" + filePathAndName+ "' and verbosity is set to '" + parsedArguments.get("--verbose") + "'.");

GitHub上提供了示例的完整代码清单,该示例的片段已在本文中显示。

下一个屏幕快照演示了未提供必需的命令行参数( --file )时显示的消息。

下面的屏幕快照演示了如何成功应用基于parse-cmd的--file--verbose命令行参数的命令行处理。

在选择框架或库来帮助Java进行命令行分析时,需要考虑parse-cmd的一些其他特征。

  • parse-cmd是带有Apache License 2.0的开源。
  • parse-cmd托管在Google代码档案库中 ,该档案库可随时被“拒绝”(当前状态为“将于2016年初被拒绝”)。
  • parsecmd-0.0.93.jar JAR文件的大小约为50 KB。
  • parse-cmd采用流畅的Builder实现,而不使用注释。

parse-cmd是(当前)另一个Java库,可供需要处理命令行参数的Java开发人员使用。 它使用一些假设和含义来做出一些决策。 parse-cmd的作者写道,尽管“有几种基于Java的命令行解析解决方案可用”,但parse-cmd仍是编写的,因为“它们通常都很难学习和使用。”

其他参考

  • 解析cmd
  • parse-cmd来源
  • parse-cmd下载
  • parse-cmd – Requirement.wiki
  • parse-cmd – sampleSource.wiki

翻译自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-9-parse-cmd.html

java parse

java parse_Java命令行界面(第9部分):parse-cmd相关推荐

  1. JAVA环境变量配置与配置后CMD的使用

    JAVA环境变量配置: 直接在环境变量Path(或PATH,大小写无所谓)里加上 :JDK安装路径名/bin 也可以先设JAVA_HOME然后再设JAVA_HOME/bin,但必须是在同一区域中进行设 ...

  2. java sdf.parse_用DateFormat的parse方法验证字符串是否是日期的问题

    因为最近比较闲 有点不思进取 也没什么问题要写了 今天不错,发现一个,恩,感觉不错 做了一个上传Excel并解析数据然后入库的功能,里面涉及到是否是日期格式的判断 之前是这么写的(深谙这么写是不好的, ...

  3. java runtime shell_java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现...

    Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱 前言 日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等.jdk的Runtim ...

  4. Java时间处理类SimpleDateFormat的parse和format方法的正确使用

    Java中怎么才能把日期转换成想要的格式呢,或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类可以实现. SimpleDa ...

  5. java rop_Java命令行界面(第23部分):Rop

    java rop Rop库在其主页上被描述为"用Java编写的轻量级命令行选项解析器". Rop的"简介"还指出:" Rop的设计目的是最小化同时方便 ...

  6. java args_Java命令行界面(第2部分):args4j

    java args 在上一篇文章中 ,我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数. 在本文中,我将使用另一个库args4j进行相同的操作. args4j采用了一 ...

  7. Windows下Java调用BAT批处理不弹出cmd窗口

    常规Windows下Java调用BAT方式肯定会弹出cmd窗口 Runtime.getRuntime().exec("cmd.exe /C start D:\\test.bat") ...

  8. Java基础:Java的记事本编写代码,使用cmd运行

    目录 一.前提: 二.写代码: 三.运行:使用快捷键win+R进入运行或者鼠标右键点击屏幕左下角win图标单击"运行",输入cmd点击确定. 四.关于cmd基础命令: 五.按照四步 ...

  9. 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec

    例如: //package FS; import java.io.IOException; import java.sql.*; public class BCP {  static Connecti ...

最新文章

  1. Java项目:家庭财务管理系统(java+Springboot+ssm+mysql+maven)
  2. 【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )
  3. 11/28 前端码农日报
  4. 模糊神经网络_神经网络模型:当网络开始产生类似于人类思维的过程
  5. JQuery AJAX提交中文乱码的解决方案
  6. primefaces_使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证...
  7. shiro 升级_小米11消息再次确认:骁龙875有独占期,超广角镜头大升级
  8. 微信公众号的开发 Senparc.Weixin.dll使用
  9. 互联网技术(java框架、分布式、集群)干货视频大全,不看后悔!(免费下载)
  10. ImageNet dataset下载
  11. 效果器的使用技巧-与调音台的无缝连接
  12. 常用的两款 爱普生epson L801(L系列)清零软件 废墨重置软件 免分下载 内附清零软件使用方法
  13. 电脑在登陆界面如何打开计算机管理,无线路由器管理界面如何登录 无法进入管理界面怎么办...
  14. GTK+ GUI库使用现状
  15. 注塑工艺工程师视频教程 注塑机调机成型参数教程
  16. csb反编译_GitHub - lyzz0612/csb2csd: cocostudio csb反编成csd
  17. 【vue】vue中设置路径别名
  18. VARIANT 类型说明
  19. 阿龙的学习笔记---ElasticSeach的学习与记录
  20. java基础(部分)

热门文章

  1. P1991-无线通讯网【最小生成树,瓶颈生成树】
  2. ssl2863-石子合并【dp练习】
  3. 纪中C组模拟赛总结(2019.7.8)
  4. 2019.01.24【NOIP普及组】模拟赛C组
  5. [XSY] 绿色(圆方树、树形DP、树上差分)
  6. JavaFX滚动事件
  7. 紧急整理了 20 道 Spring Boot 面试题,我经常拿来面试别人
  8. 一个非常好的依存句法可视化工具
  9. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
  10. 一文带你理解Java中Lock的实现原理