【发布时间】:2013-05-19 07:18:49
【问题描述】:
在 Java 中解析类似 shell 的命令行的推荐方法是什么。通过我并不意味着在已经以数组表单(例如处理“-X”)时处理选项,已经有大量的问题和答案。
不,我的意思是将完整的命令字符串拆分为“令牌”。我需要转换一个字符串,例如:
user 123712378 suspend "They are \"bad guys\"" Or\ are\ they?
...到列表/数组:
user
123712378
suspend
They are "bad guys"
Or are they?
我目前只是对空格进行拆分,但这显然无法处理引号和转义空格。
(报价处理是最重要的。转义空格会很好)
注意:我的命令字符串是来自类似 shell 的 Web 界面的输入。它不是从main(String[] args) 构建的
【问题讨论】:
-
大多数命令行库不是都解决了这个问题吗?你可以看看他们的来源。
-
@tieTYT 据我所知,这些库仅在它们被 shell 分隔后才处理参数。它们用于构建命令,而不是 shell。
-
您将如何拆分以下内容?:
This is"an example"。 IE。您将如何处理前面有非空白字符的左引号? -
@Lonenebula "This","is","an example"
-
假设您想要与 shell 使用相同的规则,this is"an example" 将解析为 this 和 isan example
标签: java parsing command-line-interface