今天写一个字符串操作的程序的时候发现对“.”的操作一直有错误。

程序如下:

package demos;
import java.io.*;
public class GetFileExtName {/**
* @param args
*/
public static void main(String[] args) {
   // TODO Auto-generated method stub
   File file=new File("c:/uploads/1210326643009.sql");
   String []a=file.getName().split("/");
   for(int i=0;i 
  
  
    //System.out.println(a[i]); 
  
   } 
  
   String s="1210326643009.sql"; 
  
   String s1[]=s.split("."); 
  
   for(int i=0;i 
   
   
    System.out.println(s1[i]); 
   
   } 
   
} 
   
 }

输出结果为空。感觉是split(".");的错误。

换成split ("0");则有结果输出

121
326643

9.sql
由"9.sql"这一结果说明“.”没有被java识别为分隔符。

网上搜索了一下,几个特殊的转义符如下:

点的转义:. ==> u002E
美元符号的转义:$ ==> u0024
乘方符号的转义:^ ==> u005E
左大括号的转义:{ ==> u007B
左方括号的转义:[ ==> u005B
左圆括号的转义:( ==> u0028
竖线的转义:| ==> u007C
右圆括号的转义:) ==> u0029
星号的转义:* ==> u002A
加号的转义:+ ==> u002B
问号的转义:? ==> u003F
反斜杠的转义: ==> u005C

/n    换行
/r    回车
/t    制表符
/f    formfeed
/b    退格
/a    响铃
/e    escape(ASCII 中的escape 字符)
/007    任何八进制值(这里是,007=bell(响铃))
/x7f    任何十六进制值(这里是,007=bell)
/cC    一个控制符(这里是,ctrl +c)
//    反斜线
/”    双引号
/l    下个字符小写
/L    接着的字符均小写直到/E
/u    下个字符大写
/U    接着的字符均大写直到/E
/Q    在non-word 字符前加上/,直到/E
/E    结束/L,/E 和/Q

用“//u002E”替换可得正确结果

1210326643009
sql