精彩文章免费看

黑客日教程-关于Java换行符你需要知道的

1 概览

编程的时候经常碰到格式化字符串或生成文本输出的场景。经常,我们需要新增加一行到文本输出中。
这个看上去很简单的问题,我们来讨论一下。

2 在字符串里增加一行

不同的操作系统有自己特定的字符来表示新的一行的开始。比如,Linux用“\n”,也称换行符(line feed)。windows中用“\r\n”,被称作回车换行,也就是CRLF(carriage return and line feed)。
增加新的一行,在java中可以很简单的在字符串的结尾加上“\n”或“\r\n”。

2.1 使用CRLF换行符

比如,如果我们想用两行文本创建一个段落,并且line2作为新的一行放在line1的后面。
对于Unix/Linux/新Mac系列的操作系统,我们可以使用“\n”:

String line1 = "Humpty Dumpty sat on a wall.";
String line2 = "Humpty Dumpty had a great fall.";
String rhyme = line1 + "\n" + line2;

在windows系统上,使用“\r\n”:

rhyme = line1 + "\r\n" + line2;

在老的Mac系统上,使用“\r”:

rhyme = line1 + "\r" + line2;

我们看到了3种方式,都是依赖于具体操作系统的,这种模式显然并不好。

2.2 使用平台无关的换行符

使用系统自定义的常量来实现平台无关。
比如,使用System.lineSeparator():

rhyme = line1 + System.lineSeparator() + line2;

还可以使用System.getProperty("line.separator")

rhyme = line1 + System.getProperty("line.separator") + line2;

3 在html中增加一行

如果我们需要在html页面中增加一行字符串,可以使用html标签

还可以使用Unicdoe字符,“ ”(回车字符)和“ ”(换号符)。这两个字符虽然有效,但是并不是在所有平台上都像我们期待那样展现。
反而是更好的方案。
在某些html标签里面,我们可以使用“\n”。
上面解释的三种方式,怎么使用取决于我们在使用什么html标签。

3.1 html <br> 标签

rhyme = line1 + "<br>" + line2;


标签基本在所有html元素中都有效,比如<body> <p> <pre>。但是注意,在<textarea>中无效。

3.2 换行字符

在<pre>和<textarea>中可以用“\n”来换行。

rhyme = line1 + "<br>" + line2;

3.3 Unicode字符

”来换行。在<textarea>中,下面写法二选一:

rhyme = line1 + "&#10;" + line2;
rhyme = line1 + "&#13;" + line2;

对于<pre>:

rhyme = line1 + "&#10;" + line2;
rhyme = line1 + "&#10;&#13;" + line2;

本文讨论了java如何在字符串中插入换行符。
还讨论了如何写平台无关的代码来换行。( System.lineSeparator()和 System.getProperty(“line.separator”) )
最后,讨论了再html页面中插入换行符的问题。
本文示例代码见github