字符串取数的小问题,请大哥帮帮忙!谢谢,在线等!像这样的一个字符串: 123.23.236.125.263.782.23.452.
  我要从中分别取出123 23 236 125 263 782 23 452那这样要怎么样实现,是用什么函数呢,还是自已写呢,大哥帮帮忙吗,要是要自已写个函数,能否帮小弟写一个,小弟不会啊

解决方案 »

  1.   

    自己写吧,用pos('.',你的字符串)这是判断你的小数点的位置,
    做一个循环判断再处理一下就可以了,不是很难的
      

  2.   

    var s, s1: string;
        i: integer;
    begin
      s:='123.23.236.125.263.782.23.452.';
      i := pos('.', s);
      while i > 0 do
      begin
        s1 := Copy(s, 1, i-1);
        showmessage(s1);
        delete(s, 1, i);
        i := pos('.', s);
      end;
    end;
      

  3.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      ps,str:string;
      vlpos:integer;
    begin
      memo1.Clear;
      ps:='123.23.236.125.263.782.23.452.';
      vlpos:= pos('.',ps);
      if vlpos = 0 then
        vlpos:= length(ps) + 1;
      while vlpos > 0 do
        begin
          str:=copy(ps,1,vlpos - 1);
          memo1.Lines.Add(str);
          delete(ps,1,vlpos);
          vlpos:= pos('.',ps);
          if (vlpos = 0)and(ps <> '') then
            vlpos:= length(ps) + 1;
        end;
    end;
      

  4.   

    var
     str,str1 :string;
     i :integer;
    begin
       str := '123.23.236.125.263.782.23.452.';
       for i := 1 to length(str) do
           begin
               if str[i] = '.' then
                  str1 := str1 + ' '
               else
                  str1 := str1 + str[i];
           end;showmessage(str1);
    end;
      

  5.   


    function Split(const srcStr, delimiter: string): TStrings;
    var i: integer;
        str: string;
    begin
      str := srcStr;
      i := Pos(delimiter, str);
      while i > 0 do
      begin
        result.Add(Copy(str, 1, i - 1);
        Delete(str, 1, i);
        i := Pos(delimiter, srcStr);
      end;
    end;调用:
      srcStr := '123.23.236.125.263.782.23.452.';
      result := TStringList.Create();
      result := Split(srcStr, '.');
    大意如此,没有测试
      

  6.   

    function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;
      

  7.   

    不好意思,小弟忘记说清楚一点了,我想得到的结果是这样的,比如窗口上有8个的edit控件,程序运行后,要使edit1的值为123,edit2的值为23,edit3的值为236,依此下次,edit8为452,对每个edit进行赋值.而不是只简单的showmessage()出来
    请大哥帮帮忙,小弟在线等,解决了,马上给分
      

  8.   

    上面的兄弟已经给出了拆分方法,搂主如果连edit这点事都做不出来赶紧转行吧
      

  9.   

    //根据某个字符分割字符串的函数
    procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
    var
      hs : string;
      p : integer;
    begin
      Terms.Clear; // First remove all remaining terms
      if Length(s)=0 then   // Nothin' to separate
        Exit;
      p:=Pos(Separator,s);
      while P<>0 do
      begin
        hs:=Copy(s,1,p-1);   // Copy term
        Terms.Add(hs);       // Add to list
        Delete(s,1,p);       // Remove term and separator
        p:=Pos(Separator,s); // Search next separator
      end;
      if Length(s)>0 then
        Terms.Add(s);        // Add remaining term
    end;
    你可以按照返回List的值给edit赋值
      

  10.   

    var
     str,str1 :string;
     i,j :integer;
    begin
       str := '123.23.236.125.263.782.23.452.';
       j := 1;
       str1 := '';
       for i := 1 to length(str) do
           begin
               if str[i] = '.' then
               begin
                  TEdit(FindComponent('Edit'+IntToStr(j))).Text = str1;
                  Inc(j);
                  str1 := ''
               end else
               begin
                  str1 := str1 + str[i];
               end;
           end;
    end;
      

  11.   

    function Split(Str :String; Dot: Char): TStringList;
    { Str:要分割的字符串,Dot:分割符,返回分割后的列表}
    begin
      Result:=TStringList.Create ;
      Result.Delimiter := Dot;
      Result.DelimitedText := Str;
    end;
      

  12.   

    str是你要分割的字符串,sign是你间隔用的符号(比如,) 本人一直使用,保证可用
    Function TFrm_F1ZBmodal.GetValues(str,sign:String):TStrings;
    var
      i,j,len:Integer;
      addstr:String;
    begin
      Result:=TStringList.Create;
      addstr:='';
      j:=1;
      len:=length(sign);
      for i:=1 to length(str)  do
      begin
        if copy(str,i,len)<>sign then
        begin
          if j<=i then
          addstr:=copy(str,j,i-j+1)
        end
        else
        begin
          Result.Add(Addstr);
          Addstr:='';
          j:=i+len;
        end;
      end;
      Result.Add(Addstr);
    end;
      

  13.   

    var
     str,str1 :string;
     i,j :integer;
    begin
       j :=1; 
       str := '123.23.236.125.263.782.23.452.';
       for i := 1 to length(str) do
           begin
               if str[i] = '.' then
                  begin
                    editj.text := str1;
                    str1 := '';
                    j := j+1;
                  end;
               else
                  str1 := str1 + str[i];
           end;end;
      

  14.   

    上面的没测试,有点小问题,如下是经过测试的,绝对正确:var
     str,str1 :string;
     i,k :integer;
    begin
       k :=1;
       str := '123.23.236.125.263.782.23.452.';
       for i := 1 to length(str) do
           begin
               if str[i] = '.' then
                  begin
                    TEdit(FindComponent('Edit'+IntToStr(k))).Text := str1;
                    str1 := '';
                    k := k+1;
                  end
               else
                  str1 := str1 + str[i];
           end;end;