【发布时间】:2012-06-17 01:54:28
【问题描述】:
为什么传递给 Java 类的命令行参数似乎被自动转义了,而在实例化的 String 对象中,转义字符 () 似乎被忽略了。
例如,如果以这样的字符串开头:
SELECT * FROM my_table WHERE my_col like 'ABC_\' ESCAPE '\'
我尝试通过这样一个简单的类来运行它:
public class EscapeTest {
public static void main (String[] args) {
String str = "SELECT * FROM my_table WHERE "
+ "my_col like 'ABC_\' ESCAPE '\'";
System.out.println("ARGS[0]: "+args[0]);
System.out.println("STR: "+str);
}
}
我将上面的“SELECT”语句作为命令行参数传递,我得到如下输出:
ARGS[0]: SELECT * FROM my_table WHERE my_col like 'ABC_\' ESCAPE '\'
STR: SELECT * FROM my_table WHERE my_col like 'ABC_' ESCAPE ''
如果我在 Eclipse 调试器中查看 ARGS[0] 的值,我会发现斜杠已被转义。为什么会这样?让我觉得有点难以预测。
【问题讨论】:
标签: java string command-line-arguments backslash