你好,怎样取字符串中的数字字符出来相加?例如:8a12b23c56d78,取出8+12+23+56+78得到的结果?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,t:string;
      i,v:integer;
      c:char;
    begin   s:='8a12b23c56d78';
       v:=0;
       i:=1;
       t:='';
       while i<=Length(s) do
       begin
        c:=s[i];
        if (c>='0') and (c<='9') then
          t:=t+c
          else
          begin
            v:=v+strtoint(t);
     //       ShowMessage(t);
            t:='';
          end;
        inc(i);
       end;
     if t<>'' then
       v:=v+strtoint(t);
    Edit1.Text:=IntToStr(v);
    end;
      

  2.   

    var
      S , S1 : String;
      i , n : integer;
    begin
      S := '8a12b23c56d78';
      S1 := '';
      n := 0;
      for i:=1 to Length(S) do begin
        if (S[i]>='0') and (S[i]<='9') then S1 := S1 + S[i]
        else begin
          n := n + StrToIntDef(S1,0);
          S1 := '';       
        end;
      end;
      //到这里n的值就是你需要的值
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var s:string;
        i,sum,a:integer;
    begin
      s:='8a12b23c56d78';
      i:=1;a:=0;
      while i<=Length(s)+1 do
        begin
          if s[i] in ['0'..'9'] then
           a:=a*10+StrToInt(s[i])
          else
            begin
              sum:=sum+a;
              a:=0;
            end;
          i:=i+1;
        end;
       showMessage(IntToStr(sum));
    end;