文本中大量的数据以0隔开 例如:012340456401456011110 
想问的是:怎么提取0之间的数并放到数组中去?

解决方案 »

  1.   

    一个分割字符串的函数,把分割后的数据保存在TStrings,可以参考一下procedure SplitString(const List:TStrings;Delimiter,DelimitedText:string);
    var
      DelimiterPos:integer;
      DelimiterLength:integer;
      DT:string;//DelimitedText的副本
    begin
      List.Clear;
      DT:=DelimitedText;
      if DT='' then exit;
      if (Delimiter='') or (Pos(Delimiter,DT)=0) then begin
        List.Add(Trim(DT));
        exit;
      end;
      DelimiterLength:=Length(Delimiter);
      DelimiterPos:=Pos(Delimiter,DT);
      while DelimiterPos<>0 do begin
        List.Add(Trim(Copy(DT,1,DelimiterPos-1)));
        Delete(DT,1,DelimiterPos-1+DelimiterLength);
        DelimiterPos:=Pos(Delimiter,DT);
      end;
      if DT<>'' then
        List.Add(Trim(DT));
    end;
      

  2.   


    var
      Strs: TStringList;
      I: Integer;
    begin
      Strs := TStringList.Create;
      //直接调用TStringList的分割符分割即可,分割出来的字符串数组就是你想要的。
      Strs.Delimiter := '0';
      Strs.DelimitedText := '012340456401456011110';  for I := 0 to Strs.Count - 1 do
        ShowMessage(Strs.Strings[I]);
    end;
      

  3.   

    用delphi的话,
    Memo1.Lines.Clear;
     sourcestr:='0123404564014560111202000012030';
     ii:= Length(sourcestr) div 5;
    for i:= 0 to ii do
     begin
        loop:=i*5+1;
       mystr:= Copy(sourcestr,loop,5);
       Memo1.Lines.Add(mystr)
     end;
    后面的循环就很简单了...
      

  4.   

    Memo1.Lines.Clear;
     sourcestr:='0123404564014560111202000012030';
     ii:= Length(sourcestr) div 5;
    for i:= 0 to ii do
     begin
      loop:=i*5+2;
      mystr:= Copy(sourcestr,loop,4);
      Memo1.Lines.Add(mystr)
     end;