如果除了时间中间是一个空格,其余全是两个或两个以上个空格的话,直接用s.split("\\s{2,}");分割就行~~~否则的话,先把两个或两个以上的空格替换成一个空格
s.replaceAll("\\s{2,}"," ");
然后再作处理~~~

解决方案 »

  1.   

    假设他们之间是用4个空格分开的
    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]);
    }
      

  2.   

    先用s.split("\\s{1,}")分割,然后循环用得到的数组的前项 + " " + 后项,判断加出来的字符串是否为日期
      

  3.   

    String test = "2005-03-26 00:06:23    abc    def    123.45    20050326";
    String[] aa = test.split(" ");  
    aa[0]=aa[0]+aa[1];或 aa[0]=aa[0]+" "+aa[1];
      

  4.   

    String test = "2005-03-26 00:06:23    abc    def    123.45    20050326";
    String[] aa = test.split(" ");  
                       aa[0]=aa[0]+aa[1];或aa[0]=aa[0]+" "+aa[1];
      

  5.   

    "2005-03-26 00:06:23"和"abc"和"def"和"123.45"和"20050326"之间是以“一个或多个”空格格开的,不定的,时间中间是一个空格,所以觉得比较麻烦
      

  6.   

    String s = " 2005-03-26 00:06:23    abc    def    123.45  20050326  ";
    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];
    }
      

  7.   

    String string=" 2005-03-26 00:06:23    abc    def    123.45  20050326  ";
    String []str=string.split("\\s+";\\s是正则表达式,表示任何形式的空格
    +表示一个或多个
      

  8.   

    楼主可以用一下StringTokenizer()  这个函数也是用来拆分字符串的!
      

  9.   

    用jFresH_MaN(TM)说的正则式String[] aa = test.split("\\s+"); 按照空格进行分组,然后再把被拆开的2005-03-26与00:06:23合并起来,这样做就是需要知道这个时间在字符串中的具体位置了。
      

  10.   

    s.replaceAll("\\s{2,}"," ");---->是把两个或两个以上的空格替换成一个空格;我想把一个空格替换成两个空格是:s.replaceAll("\\s{1,1}","  ");吗?好像不对,要怎么写?
      

  11.   

    直接写s.replaceAll(" ","  ");
      

  12.   

    非常感谢各位的提示,解决了该问题,代码如下,仅供参考。
    --------------------------------------------------------------------
      /**
       * 使用正则表达式来解析一个字符串,放到一个数组中。 <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;
      }
      

  13.   

    上面的YYYYMMDD_HHMMSS:
     private static final String YYYYMMDD_HHMMSS = "\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}";-------------------------------
    结帖!