想提取“2008/11/01 16:12:27.718 -0800”中的718这个位置的内容(这个位置可能为空或者是3位),求一高手给个java split用法。谢谢
DateFormat df=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SS Z");
Date date=df.parse( "2008/11/01 16:12:27.718 -0800");
Calendar c=Calendar.getInstance();
c.setTime(date);
System.out.println(c.get(Calendar.MILLISECOND));
如果非要用split的话这样
必须用split?
String miliSeconds = "2008/11/01 16:12:27.718 -0800".split("\\.")[1]
.split("\\s")[0];
System.out.println(miliSeconds);
那如果这个位置为空,前面那个点还有没有?http://shukuiyan.iteye.com/blog/1058672参看java中split的使用
根据 . 把字符串s分成字符串数组str,但是由于 . 在正则中有特殊含义,所以需要转义,即 \. 又由于 \ 在java里的特殊作用,又需要转义 所以最后变成 \\.
再根据 \s 把str[1]分成字符串数组sstr,\s匹配一个空白字符,同理需要转义 即 \\s
去sstr[0]即楼主所求
个人觉得用正则更好使一些。。。
public static void main(String[] args) {
String str="2008/11/01 16:12:27.718 -0800";
String[] s=str.split(" ");
String[] des=s[1].split("\\.");
System.out.println(des[1]);
}
我要是会就给你写了。。。等高手吧。。。

正解
但是转换成Date类型处理不了楼主所描述的为空的情况。