我又一个不停长的字符串, 其中的空格不定,有单词或数字
如何将他们分出来,譬如  S='  I  AM 10 YEARS OLD  '
要分成  a[1]=I A[2]=AM A[3]=10 A[4]=YEARS A[5]=OLD
不要告诉我用COPY  (因为字符串中的单词,字母长度,及空格长度不定
谢谢

解决方案 »

  1.   

    var
       MyList: TList;
       List: TList;
    begin
       MyList := TStringList.Create;
       List := TStringList.Create;
       MyList.Text := 'I  AM 10 YEARS OLD';
       List.Delimiter := ' ';
       List.DelimitedText := MyList.Text;
       Showmessage(List[0]);
       Showmessage(List[1]);
      ...
    end;
      

  2.   

    str:= trim(str);
    tt:= pos(' ',str);
    while tt>0 do
    begin
      a[i]:= copy(str,1,tt -1);
      delete(str,1,tt);
      tt:= pos(' ',str);
      inc(i);
    end;
     
      

  3.   

    哇哇,高手,学习!指haomao(我没注意过这个方法。呵呵)
      

  4.   

    我写的函数:{这个函数用来分割字符串,其中变量参数n用来传递返回的字符串的长度------------------}
    function spliteStr(s:widestring;c:widechar;var n:word):strArray;
    var
      i,j,l:word;       {i,j: 循环变量;l: 源字符串的字符数}
    begin
      n:=0;
      while (rightstr(s,1)=c) do  {去掉右边的所有c }
      begin
        s:=leftStr(s,length(s)-1);
      end;
      l:=length(s);
      for i:=0 to 63 do
      begin
        result[i]:='';
      end;
      j:=0;
      result[0]:='';
      for i:=1 to l do
      begin
        if s[i]<>c then
        begin
          result[j]:=result[j]+s[i];
        end
        else
        begin
          if (result[j]<>'') then
          begin
            j:=j+1;
          end;
        end;
      end;
      n:=j;
    end;
      

  5.   

    其中 s 为要分割的字符串, c 为用来分割的字符,返回类型为type
      strArray:=array of string;