如何取出一个字符串中每相邻两个空格之间的字符?
两个或多个连续空格算作一个空格,取出的字符串放入一个TList容器中.
如无空格则取整个字符串,从第一个不为空格的字符开始取.这应该就是许多搜索引擎要用到的取用户输入字符的算法.
如有好的算法给高分

解决方案 »

  1.   

    function  GetText(s : String) : TStringList;
    var sl :TStringList;
    begin
      sl := TStringList.Create;
      sl.Delimiter := ' ';
      sl.DelimitedText := s;
      Result := sl;
    end;
      

  2.   

    如果确认里面有某个字符肯定不能出现,比如逗号等,首先将两个空格用逗号替换掉,然后用liangqingzhi(老之)的方法最方便。
    否则如下:
    procedure TForm2.Button1Click(Sender: TObject);
      function DelFirst(S:String):string;
      var i ,Count :integer;
      begin
        Count :=Length(S);
        for i := 1 to Count do
          if S[i]<>' ' then
          begin
            Result :=Copy(s,i,Count-i+1);
            break;
          end;
      end;
    var p:integer;
        s:string;
    begin
      S :=DelFirst(Edit1.text);
      Edit2.Text :=s;  p :=-1;
      Memo1.Clear;
      While p<>0 do
      begin
        p :=Pos('  ',s);
        if p<>0 then
        Begin
          Memo1.Lines.Add(Copy(S,0,p));
          S :=Copy(S,p+2,Length(S)-p);
          S :=DelFirst(S);//再次去掉首部的空格,即三个的空格也按两个算,否则去掉此句。
        End;
      end;
      Memo1.Lines.Add(S);//将最后剩余的再加上。
    end;
      

  3.   

    我想了一下,上面的有问题,因为Delphi字符是从1开始的。应该改成:
          Memo1.Lines.Add(Copy(S,1,p-1));
          S :=Copy(S,p+2,Length(S)-p-1);
      

  4.   

    foxyy8888(SY强身,YY强国)费心了,我在试liangqingzhi(老之)的方法,
    可是不知调用他的 GetText函数后怎么从TStringList的对象里取出
    所有的值,这个对象没有Item属性啊,大家帮我再看看,国庆都没休息,真是
    辛苦大家了
      

  5.   

    放一个Memo,一个Edit,一个Button,之后就两句话啊。procedure TForm3.Button1Click(Sender: TObject);
    begin
      Memo1.Lines.Delimiter :=' ';
      Memo1.Lines.DelimitedText :=Edit1.Text;
    end;
      

  6.   

    我是想这样用个for 语句
    var 
      strMatch: TStringList;
    begin
      strMatch := GetText(Edit1.Text);//楼上liangqingzhi(老之)给的那个函数
      if strMatch.Count>0 then
         for i :=0 to strMatch.Count do
               取出strMatch当前值(问题在这里不知如何取,strMatch.Item[i]?)
    end;
      

  7.   

    楼主似乎对Delphi不熟悉,建议看看书。
    var
      strMatch: TStringList;
      i : integer;
    begin
      strMatch := GetText(Edit1.Text);
      if strMatch.Count>0 then
         for i :=0 to strMatch.Count - 1 do
          ShowMessage(strMatch[i]);
    end;
      

  8.   

    liangqingzhi(老之)太谢谢你了,程序已经写好了.我一直做JAVA的,
    最近才用Delphi帮导师做个光盘检索的小程序,多亏大家帮忙啊.想跟你交个朋友,能告诉QQ号吗?
    我的QQ是:254752890还有foxyy8888(SY强身,YY强国)你也是好兄弟,能告诉QQ号吗?
    你俩每人给50分