取字符串中的数字字符相加?

bytemove 2005-11-16 08:51:24
你好,怎样取字符串中的数字字符出来相加?例如:8a12b23c56d78,取出8+12+23+56+78得到的结果?
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2005-11-16
  • 打赏
  • 举报
回复
正则表达式
老之 2005-11-16
  • 打赏
  • 举报
回复
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;
柯本 2005-11-16
  • 打赏
  • 举报
回复
楼上的老大,你少加了最后一个78
蓝色光芒 2005-11-16
  • 打赏
  • 举报
回复
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;
柯本 2005-11-16
  • 打赏
  • 举报
回复
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;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧