传递给Java main()的命令行参数中的引号

时间:2010-10-18 14:28:35

标签: java netbeans escaping quotes

我使用以下命令行运行Java程序(编辑:在NetBeans 6.8项目属性中)

toto has:"tutu titi"

args是一个包含2个字符串的数组

toto
has:tutu titi

我想(确实有两个参数,第二个)args[1]

has:"tutu titi"

我该怎么做?

编辑:我已经尝试使用Netbeans propject属性中“Arguments”行的反斜杠转义引号,但是我得到了args [1]

has:\tutu titi\

5 个答案:

答案 0 :(得分:6)

这实际上取决于你的shell。您还没有说过您正在使用的操作系统。例如,在Windows上,这将起作用:

java Test toto "has:\"tutu titi\""

我相信同样的事情也会在bash中发挥作用。

但是如果你问你可以在Java 中做什么来解决这个问题:什么都没有。 shell将在调用进程之前解析命令行,并且您无法撤消该解析。

答案 1 :(得分:3)

我在NetBeans中遇到了类似的问题并找到了解决方案:

将private.properties中的属性“application.args”编辑/添加到:

application.args='has:""tutu titi""'

单引号用于标记“参数”,两个双引号用于定义一个“双引号”。

答案 2 :(得分:1)

使用

toto "has:\"tutu titi\""

答案 3 :(得分:1)

netbeans已将此识别为a bug that won't be fixed

答案 4 :(得分:1)

如果从NetBeans(7.1.2)Configuration / Arguments对话框字段添加,单引号外部和转义双引号内部为我工作,例如:

my argument