【发布时间】:2017-01-13 17:33:19
【问题描述】:
如果我通过 eclipse 中的运行配置将一些变量作为环境变量传递,那么它会自动转义特殊字符。我想为某些格式传递一些 '\n' 和 '\r' 字符,但是当我通过调试检查代码中的值时,它们会自动转换为 '\\n' 和 '\\r'。
String value= System.getenv("envPassed");
System.out.println("envPassed= "+value);
所以如果 envPassed 在运行配置中被指定为 'hi\n\rhello',那么它将被转换为 'hi\\n\\r' 并输出打印为
hi\n\rhello
而输出应该是
hi
hello
我们有办法让它发挥作用吗?
【问题讨论】:
-
这似乎是“converted”一词的一种奇怪用法。据我所见,根本没有转换任何内容,您已将
hi\n\rhello作为变量定义插入并得到一个包含hi\n\rhello的字符串。 -
说真的!!,它甚至在这里也将我的双反斜杠转换为单反斜杠。我又添加了一个反斜杠以将其显示为 2 个斜杠
-
输出应该不打印为两行。它应该打印为
hi\n\rhello。你提供了反斜杠,你得到了反斜杠。你得到的正是你提供的。没有转换。 Java 中唯一将这些转义序列转换为行终止字符的是 Java 编译器,当对字符串文字进行操作时,它不参与此过程。注意回车应该在换行之前。 -
你倒退了。您期望您在运行配置中按字面输入的
\n和\r成为真正的换行符,换句话说,您期望像在字符串文字中输入\n\r时发生的转换一样。但是 Eclipse 对话框不是 Java 源代码。这样的转换不会发生。除了 Eclipse 的${name}变量替换之外,您得到的正是您输入的内容。
标签: java eclipse jvm environment-variables