我们先来看几个例子:
例1:
public class Test {
public static void main(String[] args) {
String s = "'sds gdasda" + "\n" + "edaeafd'";
System.out.println("转换前:"+s); s = s.replaceAll("\r|\n", "");
System.out.println("转换后:"+s);
}
输出结果:
转换前:'sds gdasda
edaeafd'
转换后:'sds gdasdaedaeafd'
在看一个实例:
例2:
System.out.println("\\r 输出:"+"abc"+"\r"+"abc");
System.out.println("\\n输出:"+"abc"+"\n"+"abc");
以上两句在控制台输出的格式是一样的:
\r输出:abc
abc
\r输出:abc
abc
那么是不是说\r与\n是不是相等的呢?
例3:
public class Test {
public static void main(String[] args) {
String s = "'sds gdasda" + "\n" + "edaeafd'";
System.out.println("转换前:"+s); s = s.replaceAll("\r", "");
System.out.println("转换后:"+s);
}
转换前:'sds gdasda
edaeafd'
转换后:'sds gdasda
edaeafd'
输出结果可以看出\r和\n啊hi不相等的。
那么他们有什么区别呢?
例4:
public class Test {
public static void main(String[] args) {
String s = "'sds gdasda" + "\n\r" + "edaeafd'";
System.out.println("转换前:"+s);
s = s.replaceAll("\r|\n", "");
System.out.println("转换后:"+s);
}
}
输出结果:
转换前:'sds gdasda
edaeafd'
转换后:'sds gdasdaedaeafd'
可以看出\r表示回车,\n表示另起一行(\r 叫回车
C
arriage
R
eturn ;\n 叫新行
N
ew
L
ine)
我们可以在所一个实验:
例5:
public class Test {
public static void main(String[] args) {
String s = "'sds gdasda" + "\r\n" + "edaeafd'";
System.out.println("转换前:"+s);
s = s.replaceAll("\r|\n", "");
System.out.println("转换后:"+s);
}
}
输出结果:
转换前:'sds gdasda
edaeafd'
转换后:'sds gdasdaedaeafd'
在
例4到例5中我们只是把字符串s的\n\r的位置改变成了\r\n,却发现例4输出结果中多了一行空格。
至于为什么例4和例5输出会有这样的区别也就是\r\n与\n\r的区别,这是网上的一个比较好的答案:
enter+newline with different platforms:
windows: \r\n
mac: \r
unix/linux: \n
in "abc" + ”\n\rdef”, \n\r do not match any platform,so it is considered as \n and \r (which match unix/linux and mac),so there are two new lines.
in "abc" + ”\r\ndef” \r\n matches the windows platform,so it is considered as only one new line.
scim crushed, so just English.
Tab键。