如果除了时间中间是一个空格,其余全是两个或两个以上个空格的话,直接用s.split("\\s{2,}");分割就行~~~否则的话,先把两个或两个以上的空格替换成一个空格
s.replaceAll("\\s{2,}"," ");
然后再作处理~~~
s.replaceAll("\\s{2,}"," ");
然后再作处理~~~
解决方案 »
- 问个很弱的问题
- 关于编写登录框的问题?
- 大伙儿给推荐本书看看
- applet 小程序 url构造函数那块有点问题好像 恳请大侠帮忙
- 请问:java “将 expression 转换为数据类型 datetime 时发生算术溢出错误 ” (50分)
- 请教:老师布置了一个JAVA的设计题目,请问有什么好的题目啊(至少包括线程)我是JAVA初学者.
- 求100内的素数问题啊!菜鸟真菜。都快没信心了。高分送啊!赚分好机会
- 再问关于java的socket接受数据的问题(100分!)
- 想封装一个log类,可以控制日志文件大小以及回滚,类似log4j的功能,请教!
- JNI的问题?
- 紧急求助在网页中如何显示用java编写的applet
- (菜鸟)JAVA写的程序怎么能像EXE那样直接运行?
String test = "2005-03-26 00:06:23 abc def 123.45 20050326";
String[] aa = test.split(" "); //定义的按照4个空格来分割这些字符串
for(int i = 0 ; i <aa.length;i++){
System.out.println(aa[i]);
}
String[] aa = test.split(" ");
aa[0]=aa[0]+aa[1];或 aa[0]=aa[0]+" "+aa[1];
String[] aa = test.split(" ");
aa[0]=aa[0]+aa[1];或aa[0]=aa[0]+" "+aa[1];
s = s.trim().replaceAll("\\s{2,}", " ");
String[] ss = s.split("[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2} [0-9]{2,2}:[0-9]{2,2}:[0-9]{2,2}");
String[] sss = null;
for (int i = 0; i < ss.length; i++) {
if (ss[i].trim().length() != 0) {
sss = ss[i].trim().split(" ");
}
s = s.replaceAll(ss[i],"");
}
String[] ssss = new String[sss.length + 1];
ssss[0] = s;
for (int i = 1; i < ssss.length ; i++) {
ssss[i] = sss[i-1];
}
String []str=string.split("\\s+";\\s是正则表达式,表示任何形式的空格
+表示一个或多个
--------------------------------------------------------------------
/**
* 使用正则表达式来解析一个字符串,放到一个数组中。 <br>
* 1.源字符串以一个或多个空白字符作为间隔符; <br>
* 2.源字符串中包含日期格式的字符串; <br>
* 3.日期格式的字符串虽然包含有一个空格,但该空格不作为间隔符。
*
* @param source源字符串
* @return String[] 解析后的结果数组
*/
public static String[] parseStr2ArrayByRule(String source) { /**
* 本方法目的: <br>
* 将字符串"aaa bbb 2005-03-26 00:06:23 123.45 ccc2005-03-26 00:06:23ddd "
* 解析成{"aaa", "bbb", "2005-03-26 00:06:23", "123.45", "ccc2005-03-26
* 00:06:23ddd"}
*
* 本方法的实现思想: <br>
* 1)将源字符串中的两个或两个以上的空格替换成一个空格; <br>
* 2)根据正则表达式解析日期型的字符串,该字符串虽然包含空格,但认为是一个整体; <br>
* 3)组织一个中间字符串,该字符串以两个空格作为间隔符; <br>
* 4)将中间字符串按两个空格来拆分,放到一个数组中。
*/ /*------------------------------------------------------------------------*
* 1)将源字符串中的两个或两个以上的空格替换成一个空格
*------------------------------------------------------------------------*/
source = source.trim().replaceAll("\\s{2,}", " "); /*------------------------------------------------------------------------*
* 2)使用正则表达式
*------------------------------------------------------------------------*/
Pattern p = Pattern.compile(YYYYMMDD_HHMMSS); /*------------------------------------------------------------------------*
* 3)组织一个中间字符串,该字符串以两个空格作为间隔符
*------------------------------------------------------------------------*/
//起始位置
int start = 0;
//结束位置
int end = 0;
//中间字符串
String resultStr = "";
for (int i = 0; i < source.length(); i++) {
Matcher m = p.matcher(source);
if (m.find(i)) {
//匹配到字符串的时候
start = m.start();
end = m.end();
//截取满足正则表达式之前的部分
String tempStr = source.substring(0, start);
if (start > 0) {
//把一个空格(该空格为间隔符)替换成两个空格
tempStr = tempStr.replaceAll("\\s{1,1}", " ");
}
//满足正则表达式的日期型字符串
String dateStr = source.substring(start, end);
//截取满足正则表达式之后的部分
source = source.substring(end, source.length());
//组织中间字符串
resultStr += tempStr + dateStr;
//重置循环子
i = 0;
} else {
//没有匹配到对应字符串的时候
//把一个空格(该空格为间隔符)替换成两个空格
source = source.replaceAll("\\s{1,1}", " ");
//组织中间字符串
resultStr += source;
break;
}
} /*------------------------------------------------------------------------*
* 4)将中间字符串按两个空格来拆分,放到一个数组中
*------------------------------------------------------------------------*/
String[] result = resultStr.split("\\s{2,}");
return result;
}
private static final String YYYYMMDD_HHMMSS = "\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}";-------------------------------
结帖!