1 概覽
編程的時(shí)候經(jīng)常碰到格式化字符串或生成文本輸出的場(chǎng)景义起。經(jīng)常昌腰,我們需要新增加一行到文本輸出中芍碧。
這個(gè)看上去很簡(jiǎn)單的問(wèn)題栅迄,我們來(lái)討論一下痕惋。
2 在字符串里增加一行
不同的操作系統(tǒng)有自己特定的字符來(lái)表示新的一行的開(kāi)始区宇。比如,Linux用“\n”值戳,也稱換行符(line feed)议谷。windows中用“\r\n”,被稱作回車換行堕虹,也就是CRLF(carriage return and line feed)卧晓。
增加新的一行,在java中可以很簡(jiǎn)單的在字符串的結(jié)尾加上“\n”或“\r\n”赴捞。
2.1 使用CRLF換行符
比如逼裆,如果我們想用兩行文本創(chuàng)建一個(gè)段落,并且line2作為新的一行放在line1的后面赦政。
對(duì)于Unix/Linux/新Mac系列的操作系統(tǒng)胜宇,我們可以使用“\n”:
String line1 = "Humpty Dumpty sat on a wall.";
String line2 = "Humpty Dumpty had a great fall.";
String rhyme = line1 + "\n" + line2;
在windows系統(tǒng)上,使用“\r\n”:
rhyme = line1 + "\r\n" + line2;
在老的Mac系統(tǒng)上恢着,使用“\r”:
rhyme = line1 + "\r" + line2;
我們看到了3種方式桐愉,都是依賴于具體操作系統(tǒng)的,這種模式顯然并不好掰派。
2.2 使用平臺(tái)無(wú)關(guān)的換行符
使用系統(tǒng)自定義的常量來(lái)實(shí)現(xiàn)平臺(tái)無(wú)關(guān)从诲。
比如,使用System.lineSeparator():
rhyme = line1 + System.lineSeparator() + line2;
還可以使用System.getProperty("line.separator")
rhyme = line1 + System.getProperty("line.separator") + line2;
3 在html中增加一行
如果我們需要在html頁(yè)面中增加一行字符串碗淌,可以使用html標(biāo)簽
盏求。
還可以使用Unicdoe字符,“
”(回車字符)和“
”(換號(hào)符)亿眠。這兩個(gè)字符雖然有效碎罚,但是并不是在所有平臺(tái)上都像我們期待那樣展現(xiàn)。
反而是更好的方案纳像。
在某些html標(biāo)簽里面荆烈,我們可以使用“\n”。
上面解釋的三種方式竟趾,怎么使用取決于我們?cè)谑褂檬裁磆tml標(biāo)簽憔购。
3.1 html <br> 標(biāo)簽
rhyme = line1 + "<br>" + line2;
標(biāo)簽基本在所有html元素中都有效,比如<body> <p> <pre>岔帽。但是注意玫鸟,在<textarea>中無(wú)效。
3.2 換行字符
在<pre>和<textarea>中可以用“\n”來(lái)?yè)Q行犀勒。
rhyme = line1 + "<br>" + line2;
3.3 Unicode字符
使用“ ”和“ ”來(lái)?yè)Q行屎飘。在<textarea>中,下面寫(xiě)法二選一:
rhyme = line1 + " " + line2;
rhyme = line1 + " " + line2;
對(duì)于<pre>:
rhyme = line1 + " " + line2;
rhyme = line1 + " " + line2;
4 結(jié)論
本文討論了java如何在字符串中插入換行符贾费。
還討論了如何寫(xiě)平臺(tái)無(wú)關(guān)的代碼來(lái)?yè)Q行钦购。( System.lineSeparator()和 System.getProperty(“l(fā)ine.separator”) )
最后,討論了再html頁(yè)面中插入換行符的問(wèn)題褂萧。
本文示例代碼見(jiàn)github