Java 转移字符与字符的处理

原创 2017年07月27日 00:56:46
那么这里在列上一些转义字符
 \\ 反斜杠 
\t 间隔 ('\u0009')
\n 换行 ('\u000A')
\r 回车 ('\u000D')
\d 数字 等价于 [0-9]
\D 非数字 等价于 [^0-9]
\s 空白符号 [\t\n\x0B\f\r]
\S 非空白符号 [^\t\n\x0B\f\r]
\w 单独字符 [a-zA-Z_0-9]
\W 非单独字符 [^a-zA-Z_0-9]
\f 换页符 
\e Escape
\b 一个单词的边界 
\B 一个非单词的边界 
\G 前一个匹配的结束
------------------------------------------------------------------------------------
我在应用中用到一些给大家总结一下仅供大家参考
1、如果用“.”作为分隔的话必须是如下写法String.split("\\."),这样才
能正确的分隔开不能用String.split(".");
2、如果用“|”作为分隔的话必须是如下写法String.split("\\|"),这样才
能正确的分隔开不能用String.split("|");
“.”和“|”都是转义字符必须得加"\\";
3、如果在一个字符串中有多个分隔符可以用“|”作为连字符比如“acount=?
and uu =? or n=?”,把三个都分隔出来可以用String.split("and|or");
使用String.split方法分隔字符串时分隔符如果用到一些特殊字符可能会
得不到我们预期的结果。 
我们看jdk doc中说明  
public String[] split(String regex)
 Splits this string around matches of the given regular expression. 
参数regex是一个 regular-expression的匹配模式而不是一个简单的String
他对一些特殊的字符可能会出现你预想不到的结果比如测试下面的代码
用竖线 | 分隔字符串你将得不到预期的结果
    String[] aa = "aaa|bbb|ccc".split("|");
    //String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果
    for (int i = 0 ; i <aa.length ; i++ ) {
      System.out.println("--"+aa[i]); 
    } 
用竖 * 分隔字符串运行将抛出Java.util.regex.PatternSyntaxException异
常用加号 + 也是如此。
    String[] aa = "aaa*bbb*ccc".split("*");
    //String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结
果    
    for (int i = 0 ; i <aa.length ; i++ ) {
      System.out.println("--"+aa[i]); 
    }  显然+ * 不是有效的模式匹配规则表达式用"\\*" "\\+"转义后即可得到正
确的结果。
"|" 分隔串时虽然能够执行但是却不是预期的目的"\\|"转义后即可得到正
确的结果。
还有如果想在串中使用"\"字符则也需要转义.首先要表达"aaaa\bbbb"这个串
就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果
String[] aa = "aaa\\bbb\\bccc".split("\\\\");
 
这是获取当前简单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中转义字符

JAVA中转义字符 2010年08月11日 星期三 上午 12:22 JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377' ...
  • GeneralYY0
  • GeneralYY0
  • 2012年02月29日 18:36
  • 215757

java 转义符 \\|

http://zghbwjl.blog.163.com/blog/static/12033667220133174828149/ 看一段程序 String t = "a||b||c||...
  • stewen_001
  • stewen_001
  • 2014年04月03日 15:01
  • 38199

JAVA中转义字符简单的四种

1.八进制转义序列: \ddd 三位八进制 \n 回车(\ ) \t 水平制表符(\ ) \b 空格(\) \r 换行(\ ) \f 换页(\ ) \’ 单引号(\') \...
  • twc18638942853
  • twc18638942853
  • 2017年02月24日 09:15
  • 1397

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

java中的字符串部分转义字符,如反斜杠的使用小结   意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b             退格(B...
  • lu_jun_xian
  • lu_jun_xian
  • 2017年02月13日 13:46
  • 2812

利用StringEscapeUtils对字符串进行各种转义与反转义(Java)

apache工具包common-lang中有一个很有用的处理字符串的工具类,其中之一就是StringEscapeUtils,这个工具类是在2.3版本以上加上的去的,利用它能很方便的进行html,xml...
  • chenleixing
  • chenleixing
  • 2015年02月03日 20:51
  • 104049

java 需要转义的一些特殊符号。

那么这里在列上一些转义字符  \\ 反斜杠 \t 间隔 ('\u0009') \n 换行 ('\u000A') \r 回车 ('\u000D') \d 数字 等价于 [0-9] \D...
  • lanchengxiaoxiao
  • lanchengxiaoxiao
  • 2014年12月12日 14:54
  • 69660

JAVA中的转移字符

?Java的转义字符有如下:  /n 回车(/u000a)  /t 水平制表符(/u0009)  /b 空格(/u0008)  /r 换行(/u000d)  /f 换页(/u000c)  / 单引号(...
  • caolijunmingyan
  • caolijunmingyan
  • 2011年02月17日 11:52
  • 3388

[Java工具类]spring常用工具类 2.特殊字符转义和方法入参检测工具类

特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的...
  • aya19880214
  • aya19880214
  • 2016年01月20日 18:48
  • 2381

利用StringEscapeUtils对字符串进行各种转义与反转义(Java)

利用StringEscapeUtils对字符串进行各种转义与反转义(Java)
  • educast
  • educast
  • 2017年04月14日 14:41
  • 731

利用StringEscapeUtils对字符串进行各种转义与反转义(Java)

apache工具包common-lang中有一个很有用的处理字符串的工具类,其中之一就是StringEscapeUtils,这个工具类是在2.3版本以上加上的去的,利用它能很方便的进行html,xml...
  • princeLuan
  • princeLuan
  • 2017年06月27日 21:17
  • 779
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 转移字符与字符的处理
举报原因:
原因补充:

(最多只允许输入30个字)