【问题标题】:Java Quoting string variablesJava 引用字符串变量
【发布时间】:2017-10-11 03:58:51
【问题描述】:

我想打印出来

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);

【问题讨论】:

  • 在什么情况下不起作用?有错误吗?它会打印其他内容吗?
  • 你想要 "host=5 那么为什么 st\"= 不需要结束引号。什么是单引号?
  • 我可以建议一种让自己更轻松的方法:查看String.format(...) 和/或StringBuilder 来组装这样的长字符串。
  • 假设你最后有额外的报价。 String p = "ansible-playbook delete.yml --extra-vars \"host= "+ip+" user="+usr+" pass= "+pw+" vm= "+vmName+"\"";
  • 应该禁止使用“没用”这句话。

标签: java string escaping quotes


【解决方案1】:

你从取字符串开始。

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

然后你转义所有特殊字符。在这种情况下,这只是两个双引号。

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 + "\"";

如果你一步一步来,看看这有多容易?

【讨论】:

  • 哇...非常感谢。我绝对应该一次迈出一步:)
猜你喜欢
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多