字符串如:
str:='13   asdf .sfs ddss   good';
我要得到新字符串,字符串中不含有空格
str1:=13;
str2:='asdf .sfs ddss'
str3:='good'  最好从最右边第一个空格起开始复制

解决方案 »

  1.   

    先把空格去掉然后再截取
    str := StringReplace(str, ' ', '', [rfReplaceAll]); //去空格
      

  2.   

    str_new:=trim(str);(去掉空格)
    如果你的字串長度和中間的空格個數一樣就好辦,如果不一樣,就要
    根據具體情況來截取了
      

  3.   

    谢谢关注!!
    可那样不合我的意思
    我的意思是
    1.将字符串两头的空格去掉后
    2.将从左到右磁到第一个空格将字符串给str1
    3.从右到左磁到第一个空格并将后面字符串给str3
    4.其它的给str2就达到目的了
      

  4.   

    你知道VB里的split函数吗?可delphi里没有!我们可以自己写,我举个例子(转载):
    function split(s,s1:string):TStringList;
    begin
      Result:=TStringList.Create;
      while Pos(s1,s)>0 do
      begin
         Result.Add(Copy(s,1,Pos(s1,s)-1));
         Delete(s,1,Pos(s1,s));
      end;
      Result.Add(s);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      s1:TStringList;
    begin
     s1:=split('11111111  2222  33333  44444','  ');
     Memo1.Lines.AddStrings(s1);
     s1.Free;
    end;
      

  5.   

    帮你搞定了
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str,str1,str2,str3: string;
      i,j: Integer;
    begin
      str:='13   asdf .sfs ddss   good';
      i := pos(' ',str);
      j := pos('good',str);
      str1 := copy(str,1,i-1);
      str2 := copy(str,i,j-i);
      str3 := copy(str,j,length(str)-j+1);
      Label1.Caption := str1;   
      //如果不要空格,可相应加上trim函数去掉两边空格Trim(str1)
      Label2.Caption := str2;
      Label3.Caption := str3;
    end;
      

  6.   

    将两端空格去掉trim();截取13,再截取good,剩下的是....然后trim(剩下的)
    leftstr(str,2);//13
    rightstr(str,4);//good
    midstr(str,3,length(str)-6;//剩下的
      

  7.   

    谢谢各位了!!
    可是
    str1和str3的长度是不固定的啊
    str1:=1,2,....,10001
    str3:=good,bad,我的最爱,kkkkkkkkkkddd,....
    都有可能呀我的意思是
    1.将字符串两头的空格去掉后
    2.将从左到右磁到第一个空格将字符串给str1
    3.从右到左磁到第一个空格并将后面字符串给str3
    4.其它的给str2就达到目的了看来这个问题还是属于高难度的!!!
      

  8.   

    其实我只要知道有没有从右向左读字符串的function就可以了
      

  9.   

    其實就是實現的時候比較麻煩,要附一次值,然後就把用過的字串去掉
    righrstr可以從右向左讀取數據
      

  10.   

    字符串如:
    str:='13   asdf .sfs ddss   good';
    我要得到新字符串,字符串中不含有空格
    str1:=13;
    str2:='asdf .sfs ddss'
    str3:='good'  最好从最右边第一个空格起开始复制VAR K:STRING;K:=STR;   STR1:=TRIM(COPY(STR,1,POS(' ',STR)-1); //13
    STR:=TRIM(DELETE(STR,1,LENTTH(STR1)));
    str2:=TRIM(COPY(STR,1,POS(' ',STR)-1); //asdf .sfs ddss
    str:=TRIM(DELETE(STR,1,LENTTH(STR2)));
    str3:=TRIM(COPY(STR,1,POS(' ',STR)-1); //good
    自己测一下
      

  11.   

    用lenhth得到总长,
    用repeat.....  until byte[i]=' ' 和for  i=1 to/down to (从两边截取)...循环来控制,并用 str:=byte[i]+str(从后向前);str:=str+byte[i](从前向后);就可以了,