类似于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()
然后将找到该--script
选项并遍历文件中的不同行,将每一行拆分为一个数组,然后在joptsimple实例上触发该数组,然后将其传递到我的应用程序驱动程序中。
joptsimple带有一个具有parse方法的解析器,但是它仅支持一个String
数组。同样,GetOpt构造函数也需要String[]
-因此需要解析器。
这是将文本行从文件拆分为参数向量的一种非常简单的替代方法,以便您可以将其输入到选项解析器中:
这是解决方案:
public static void main(String[] args) {
String myArgs[] = Commandline.translateCommandline("-a hello -b world -c \"Hello world\"");
for (String arg:myArgs)
System.out.println(arg);
}
魔术课Commandline
是
蚂蚁的 一部分。因此,您必须将ant放在类路径上,或者仅使用Commandline类,因为所使用的方法是静态的。
问题内容: 我在字符串中包含命令行参数,我需要将其拆分以提供给。 我看到文档大量使用。但是,在复杂的情况下,这是行不通的,例如 有功能可以在python中做到这一点吗? ( 这里 有人问类似的Java问题 )。 问题答案: 这是为创建的。
问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生
问题内容: 我有一个,我想将其拆分为, 此拆分代码应适用于所有输入之王,例如ab123456和acff432等。如何拆分这种字符串。可能吗? 问题答案: 您可以尝试拆分像的正则表达式。试试这个: 将输出 您可以使用解析数字字符串为Integer 。
问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:
问题内容: 一些外部数据供应商希望给我一个数据字段-管道分隔的字符串值,我觉得这很难处理。 没有应用程序编程语言的帮助,有没有办法将字符串值转换为行? 但是,存在一个困难,该字段具有未知数量的定界元素。 有问题的数据库引擎是MySQL。 例如: 问题答案: 它可能没有我最初想象的那么困难。 这是一种通用方法: 计算分隔符的出现次数 循环多次,每次获取一个新的定界值并将该值插入第二个表中。
将多行字符串根据行拆分为数组。 使用 String.split() 和一个正则表达式来匹配换行符并创建一个数组。 const splitLines = str => str.split(/\r?\n/); splitLines('This\nis a\nmultiline\nstring.\n'); // ['This', 'is a', 'multiline', 'string.' , '']