Java 引用字符串变量

Java Quoting string variables

提问人:user3078335 提问时间:5/12/2017 更新时间:5/12/2017 访问量:107

问:

我想把它打印出来

ansible-playbook delete.yml --extra-vars “host=5.955.595 user=root pass=anotherpw vm=myVm”

这是我的代码。但它似乎不起作用。

    String ip = "5.595.595";
    String usr = "root";
    String pw = "anotherpw";
    String vmName = "myVm";

    String p = "ansible-playbook delete.yml --extra-vars \"host\"= '"+ip+"' \"user\"='"+usr+"' \"pass\"= '"+pw+"'  \"vm\"= '"+vmName+"' " ";
    System.out.println(p);
Java 字符串 转义 引号

评论

2赞 Thilo 5/12/2017
它以什么方式不起作用?有错误吗?它会打印其他东西吗?
1赞 Scary Wombat 5/12/2017
你想要 “host=5 so why do st\”= no end quote required.单引号有什么用?
0赞 KevinO 5/12/2017
请允许我提出一种让自己更轻松的方法:查看和/或像这样组装长字符串。String.format(...)StringBuilder
0赞 Rajith Pemabandu 5/12/2017
假设您最后有额外的报价。String p = "ansible-playbook delete.yml --extra-vars \"host= "+ip+" user="+usr+" pass= "+pw+" vm= "+vmName+"\"";
0赞 EJoshuaS - Stand with Ukraine 5/12/2017
“不起作用”这句话应该被禁止。

答:

2赞 Andreas 5/12/2017 #1

你从取字符串开始。

ansible-playbook delete.yml --extra-vars "host=5.955.595 user=root pass=anotherpw vm=myVm"

然后你转义所有特殊字符。在本例中,这只是 2 个双引号。

ansible-playbook delete.yml --extra-vars \"host=5.955.595 user=root pass=anotherpw vm=myVm\"

然后用双引号将其括起来,使其成为 Java 字符串文本。

"ansible-playbook delete.yml --extra-vars \"host=5.955.595 user=root pass=anotherpw vm=myVm\""

然后,删除硬编码值,并将其替换为具有动态值的变量的字符串连接。

"ansible-playbook delete.yml --extra-vars \"host=" + ip + " user=" + usr + " pass=" + pw + " vm=" + vmName + "\""

然后,将其分配给一个变量。

String p = "ansible-playbook delete.yml --extra-vars \"host=" + ip + " user=" + usr + " pass=" + pw + " vm=" + vmName + "\"";

然后,将其包装在多行上,以使其更具可读性。

String p = "ansible-playbook delete.yml --extra-vars \"host=" + ip +
                                                     " user=" + usr +
                                                     " pass=" + pw +
                                                       " vm=" + vmName + "\"";

看看它有多容易,如果你只是一步一个脚印?

评论

0赞 user3078335 5/13/2017
哇。。。非常感谢。我绝对应该一步一步来:)