今天一同学,想用java里面main
的参数,而在这个参数里面又有换行符,比如输入
app "Hello\nWorld"
输出:
Hello
World
目标:想要的结果是,输出换行符(就是要换行),而事与愿违,输出竟然是源字符串"Hello\nWorld"
结果:先给出最终的做法,是这样
public class app {
public static void main(String[] args) {
String output = args[0].toString().replace("\\n", "\n");
System.out.print(output);
}
}
调试:理应将参数args[0]理解成Hello加一个换行符然后再加上World。结果运行出来显示的是源字符串"Hello\nWorld"。通过Eclipse调试,看到参数args[0]的value索引5的那个字符竟然是"\\",这就是\的字符串转义表示。通过下面的变量视图,我们知道,args参数里面的转义符号"\"已经被自动转换成"\\"了。为了使\与n组合成换行符,我们把args[0]的\\用\替换掉,就可以解决问题了。
扩展:把路径中的一个\转换成两个\\(为了表示Windows
中的路径),我们可以这样做:
String strPath = getSomePath();
strPath.replace("\\", "\\\\");
...
结束语:replace是一个很好用的字符串函数,MFC中也有类似的CString类,不过那个Replace是首字母大写的