今天一同學,想用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是首字母大寫的