public class Test{
public static void main(String[]args){
String sql="ab cde  fghi  jklmn   opq";
String[]ob=sql.split(" ");
for(String t:ob)
System.out.println(t);
}
}结果为:
ab
cdefjhijklmn
opq
而我想要的结果是:
ab
cde
fjhi
jklmn
opq

解决方案 »

  1.   

    ab cde  fghi  jklmn   opq你字符串 字母和字母之间的空格数量不一样 才导致的 String[]ob=sql.split(" ");
     这样写  是以一个空格的大小为中间量分解数组你吧字符串之间的空格数都控制在一个上就 出现你要的结果了

    ab cde fghi jklmn opq
      这样的字符串 
      

  2.   

     String sql="ab cde  fghi  jklmn   opq";
     sql = sql.replaceAll("\\s+", " ");
            String[]ob=sql.split(" ");
            for(String t:ob)
                System.out.println(t);
      

  3.   


    public class Test{
        public static void main(String[]args){
            String sql="ab cde  fghi  jklmn   opq";
            String[]ob=sql.split("\\s+");
            for(String t:ob)
                System.out.println(t);
        }
    }
      

  4.   

    这里的 String[]ob=sql.split(" ");
    怎么理解?
      

  5.   

    刚才打错了,是 String[]ob=sql.split("\\s+");
    这句怎么理解啊?尤其是这个\\S
      

  6.   

    使用StringTokenizer
    String的split(" ")如果碰到有3个"   "它把第一个做为匹配格式的 然后就得到后两个。
    StringTokenizer的话是无视有几个" "的 都视为匹配的符号。
    如:this is   a      test
    得到:
    this
    is
    a
    test
      

  7.   

    用StringTokenizer吧,标准的分割 
      

  8.   

    “\\s” A whitespace character: [ \t\n\x0B\f\r] 并不一定都是空格
      

  9.   

    呵呵,已经找到答案了
    正则表达式,   
      \\d表示   0-9   的数字,   
      \\s表示   空格,回车,换行等空白符,   
      \\w表示单词字符(数字字母下划线)   
      +号表示一个或多个的意思
    谢谢各位!
      

  10.   

    OK。结贴啦,我不是不用StringTokenizer
    是我看书的时候,正好看到了这个函数,所以就要了解清楚撒。。呵呵!
      

  11.   

    public class Test{
        public static void main(String[]args){
            String sql="ab cde  fghi  jklmn   opq";
            String[]ob=sql.split("\\s+");
            for(String t:ob)
                System.out.println(t);
        }
    }