现在有一¥875,321.56,转换为875321.56这样的数值,我不会转换,请问,在Delphi里有没有现成的函数,或,用其它简单的方法解决。

解决方案 »

  1.   

    借用别人写的一个替换函数
    procedure replace(var s:string;const SourceChar:pchar;const RChar:pchar);
    var
    ta,i,j:integer;
    m,n,pn,sn:integer;
    SLen,SCLen,RCLen:integer;//SLen表示原串的长度,SCLen表示模式传的长度,RCLen表示替换串的长度
    IsSame:integer;
    newp:array of char;//用来保存替换后的字符数组
    begin
    SLen:=strlen(pchar(s));SCLen:=strlen(SourceChar);RCLen:=strlen(RChar);
    j:=pos(string(SourceChar),s);
    s:=s+chr(0);ta:=0;i:=j;
    while s[i]<>chr(0) do   //这个循环用ta统计模式串在原串中出现的次数
    begin
    n:=0;IsSame:=1;
    for m:=i to i+SCLen-1 do
    begin
    if m>SLen then begin IsSame:=0;break; end;
    if s[m]<>sourceChar[n] then begin IsSame:=0;break; end;
    n:=n+1;
    end;
    if IsSame=1 then begin ta:=ta+1;i:=m; end else i:=i+1;
    end;
    if j>0 then
    begin
    pn:=0;sn:=1;
    setlength(newp,SLen-ta*SCLen+ta*RCLen+1);//分配newp的长度,+1表示后面还有一个#0结束符
    while s[sn]<>chr(0) do //主要循环,开始替换
    begin
    n:=0;IsSame:=1;
    for m:=sn to sn+SCLen-1 do //比较子串是否和模式串相同
    begin
    if m>SLen then begin IsSame:=0;break; end;
    if s[m]<>sourceChar[n] then begin IsSame:=0;break; end;
    n:=n+1;
    end;
    if IsSame=1 then//相同
    begin
    for m:=0 to RCLen-1 do
    begin
    newp[pn]:=RChar[m];pn:=pn+1;
    end;
    sn:=sn+SCLen;
    end
    else
    begin //不同
    newp[pn]:=s[sn];
    pn:=pn+1;sn:=sn+1;
    end;
    end;
    newp[pn]:=#0;
    s:=string(newp); //重置s,替换完成!
    end;
    end;调用
    ==================
    var
    s:string;
    begin
    s:='¥875,321.56';
    replace(s,'¥','');
    replace(s,',','');
    ShowMessage(s);
    end;
      

  2.   

    用StringReplace来替换¥和逗号不就行了
      

  3.   

    - -! 我是自己写了一个删除字符串里面特定字符的函数  ,么想到用了这么多时候,还有更好的方法..靠~~~
      function DelStr(s, Subs: string): string;
      var
        i               : Integer;
        sRet            : string;
      begin
        sRet := s;
        for i := Length(sRet) downto 1 do
          if sRet[i] = Subs then
            Delete(sRet, i, 1);
        Result := sRet;
      end;
      

  4.   

    同意liangqingzhi(老之) 的做法:
    var
      temp : String;
    begin
    temp :='¥875,321.56';temp := StringReplace(temp,'¥','',[rfReplaceAll]);
    temp := StringReplace(temp,',','',[rfReplaceAll]);
    showmessage(temp);
    end;