我现在有个文本,里面有数据(数字)我现在想把数据(数字)全部加2,文本是多行。例子  :文本“大师傅技术安123 定建房可是觉345.67得恺撒  艰苦7856”
替换后的文本“大师傅技术安125 定建房可是觉347.67得恺撒  艰苦7858”请指教

解决方案 »

  1.   

    就是,算法很重要,特别对与这些东西,先截取数字出来,可以作个判断,完了,转成int型的,然后在加
      

  2.   

    给你一个思路:  建立一个堆栈,从文本开头一个一个字符读,如果是0..9 or .  那么压入栈中
      当读到一个非 0..9 or . ,看栈中有没有数据,如果有,就把它转化为实数,然后加2后写回文本,之后清空栈,继续读
      

  3.   

    //例子:
    //实际应用中只需要把Memo1.Lines[j]等改为ReadLn,WriteLn等。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        Memo2: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      s1,s2,s:string;
      i,j:integer;
      v:integer;
      bPoint:Bool;
    begin
    For j:=0 To Memo1.Lines.Count-1 Do
    Begin
    s1:=Memo1.Lines[j];
    s:='';
    s2:='';
    bPoint:=False;
    For i:=1 to length(s1) do
     Begin
      If s1[i] in ['0'..'9'] then
         Begin
           If Not bPoint Then
              s:=s+s1[i]
           Else
              Begin
                s:='';
                s2:=s2+s1[i];
              End;
           End
      Else
         Begin
            If s1[i]='.' Then
               Begin
                 bPoint:=True;
               End
            Else
               bPoint:=False;
            If Length(s)<>0 Then
               Begin
                 s:=IntToStr(StrToInt(s)+2);
                 s2:=s2+s;
               End;
            s2:=s2+s1[i];
            s:='';
         End;
     End;
     If i=Length(s1)+1 Then
        If Length(s)<>0 Then
          Begin
            s:=IntToStr(StrToInt(s)+2);
            s2:=s2+s;
          End;
     Memo2.Lines[j]:=s2;
    End;
    end;end.