java 处理字符串是的转义字符的处理

  作为一名java初学者,在遇到关于转义字符处理的时候总会感觉有点复杂,特别是在处理反斜杠“\”的时候,会有点绕弯子,为了避免自己忘了就现在这里做一个记录。废话不多说,先看一个例子。

package test;


import java.net.URL;

import org.junit.Before;
import org.junit.Test;

public class EscapeCharacterTest {

	@Before
	public void setUp() throws Exception {
	}
	
	@Test
	public void testEscapeCharacter(){
		URL url=Thread.currentThread().getContextClassLoader().getResource("");
		String path=url.toString();
		String path2=System.getProperty("user.dir");
		System.out.println("path: "+path);
		System.out.println("path2: "+path2);
	}

}

这是获取当前简单java工程的classpath的两种方法,控制台输出如下:
path: file:/E:/LuJunXian/aotospace/ReadOffice/bin/
path2: E:\LuJunXian\aotospace\ReadOffice

可见:path使用的分隔符是斜杠:“/” ; 而path2使用的是反斜杠: "\" ;
在java语言中,“\”所代表的是转义字符,并不代表反斜杠本身,所以在java代码中想要表示反斜杠本身“\”,则需要表示为“\\”,前一个反斜杠表示转义后一个反斜杠为反斜杠本身,也就是说,如果需要在控制台通过System.Out.println()打印出一个反斜杠的话,代码需要这样写System.out.println("\\");再稍微的延伸一下,如果需要在控制台打印单引号或者双引号的话,代码是System.out.println("\"");如果不加转义字符“\”就会出现配对的错误。

在String类的方法里面,split和replace或者replaceAll会经常被用到,比如,若需要将path2的文件分隔符转换为path的类型,则需要将代码写成 path2.replaceAll("\\\\", "/");
为什么需要这样写呢?原因就是第一个参数是正则表达式,在正则表达式中,“\”也是转义字符,可以简单的理解为,第一个参数需要经过两次转义才能将其转化为一个普通的字符串,所以就是前两个反斜杠"\\"经过正则表达式的转换后变成"\",同理,第三个和第四个经过正则表达式转换后也变成"\",所以经过第一次转换后的第一个参数变成“\\”,第二次转义后就变成了普通的字符"\"而不是转义字符,
同样的道理:若有一段字符串:“ab||cd||1234||8569”,这串字符被“||”分隔,若是需要用split解析的话,应该写成String []strs=str.split("\\|\\|");
下表列举了其他的一些常用转义字符。

转义字符
 
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b            
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\0
空字符(NULL)
000
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换

你可能感兴趣的:(java)