在 Java 中将包含命令行参数的字符串拆分为 String[]
与C#的这个线程类似,我需要将包含命令行参数的字符串拆分到我的程序中,以便我可以允许用户轻松运行多个命令。例如,我可能有以下字符串:
-p /path -d "here's my description" --verbose other args
鉴于上述情况,Java通常会将以下内容传递给main:
Array[0] = -p
Array[1] = /path
Array[2] = -d
Array[3] = here's my description
Array[4] = --verbose
Array[5] = other
Array[6] = args
我不需要担心任何shell扩展,但它必须足够智能,以处理单引号和双引号以及字符串中可能存在的任何转义。有没有人知道一种方法来解析字符串,就像shell在这些情况下一样?
注意:我不需要做命令行解析,我已经在使用joptsimple来做到这一点。相反,我想让我的程序易于编写脚本。例如,我希望用户能够在单个文件中放置一组命令,每个命令在命令行上都是有效的。例如,他们可能会在文件中键入以下内容:
--addUser admin --password Admin --roles administrator,editor,reviewer,auditor
--addUser editor --password Editor --roles editor
--addUser reviewer --password Reviewer --roles reviewer
--addUser auditor --password Auditor --roles auditor
然后,用户将按如下方式运行我的管理工具:
adminTool --script /path/to/above/file
main()
然后找到该选项并循环访问文件中的不同行,将每行拆分为一个数组,然后我会在一个joptsimple实例上触发该数组,然后将其传递到我的应用程序驱动程序中。--script
joptsimple附带了一个具有解析方法的解析器,但它只支持数组。类似地,GetOpt 构造函数也需要一个 -- 因此需要一个解析器。String
String[]