有一道delphi面试题如下:
给一个字符串,要求写一个函数,找到其中的数字并求和。
如给定字符串:78a7283bbh90g,则数字和为:78+7283+90
下面给出一个比较简单的算法:
function getNumSum(const instr: string): double; var sl: TStringList; aStr: String; i: integer; begin result := 0; aStr := ''; for i:=0 to Length(instr)-1 do begin if (instr[i] >='0' and instr[i] <= '9') or (instr[i]='.') then aStr := aStr + instr[i] else aStr := aStr + ','; end; aStr := aStr + ','; sl := TStringList.Create; try sl.commaText := aStr; for i:=0 to sl.count-1 do Result := Result + StrtoFloatDef(sl[i],0); finally sl.free; end; end;