delphi实现字符串中数字的判断及相应数字累加
2010-05-08 13:45
330 查看
写上来看大家是否还有更优化的写法,欢迎讨论:
下面实现将字符串"10ad200d3" 中的数字合计,10+200+3=213
var s1:string;
var i:integer;
var n1:integer;
var tem1: string;
var tem2:integer;
s1:='10ad200d3'; // 要处理的字符串
tem1:=''; //用来存放得到的数字型字符
tem2:=0; //用来存放合计数
n1:=1; //用来存放统计到位数 ,即现时判断到哪一位置了
for i:=1 to length(s1) do
begin
//当遇到字符时
if not (s1[i] in ['0'..'9','.']) then //判断字符串中某个字符是否是数字
begin
if i<>1 then //当第一个就是字符时,对于本例是不用作任何处理
begin
if tem1<>'' then //将这个字符前面 数字相加
begin
tem2:=tem2+strtoint(tem1);
tem1:='';
end;
end;
n1:=i+1; //位置向前推一位
end;
if (s1[i] in ['0'..'9','.'])then
begin
tem1:=tem1+copy(s1,n1,1); //这种处理主要是为如果连续出现数字时
n1:=i+1;
end;
end;
if tem1<>'' then //将最后的数据相加
begin
tem2:=tem2+strtoint(tem1);
end;
showmessage(inttostr(tem2));
最后得到的结果是213
以上代码在delphi7.0测试通过!
上面的情况还有一点没有考虑到,就是如果是连接出现数字,但前面一个数字是0时,合计数应该出错.不过,处理这个问题应该也比较简单,在累加前加上10000000 后再添加即可
下面实现将字符串"10ad200d3" 中的数字合计,10+200+3=213
var s1:string;
var i:integer;
var n1:integer;
var tem1: string;
var tem2:integer;
s1:='10ad200d3'; // 要处理的字符串
tem1:=''; //用来存放得到的数字型字符
tem2:=0; //用来存放合计数
n1:=1; //用来存放统计到位数 ,即现时判断到哪一位置了
for i:=1 to length(s1) do
begin
//当遇到字符时
if not (s1[i] in ['0'..'9','.']) then //判断字符串中某个字符是否是数字
begin
if i<>1 then //当第一个就是字符时,对于本例是不用作任何处理
begin
if tem1<>'' then //将这个字符前面 数字相加
begin
tem2:=tem2+strtoint(tem1);
tem1:='';
end;
end;
n1:=i+1; //位置向前推一位
end;
if (s1[i] in ['0'..'9','.'])then
begin
tem1:=tem1+copy(s1,n1,1); //这种处理主要是为如果连续出现数字时
n1:=i+1;
end;
end;
if tem1<>'' then //将最后的数据相加
begin
tem2:=tem2+strtoint(tem1);
end;
showmessage(inttostr(tem2));
最后得到的结果是213
以上代码在delphi7.0测试通过!
上面的情况还有一点没有考虑到,就是如果是连接出现数字,但前面一个数字是0时,合计数应该出错.不过,处理这个问题应该也比较简单,在累加前加上10000000 后再添加即可
相关文章推荐
- delphi中判断字符串是否为数字
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)--来源CSDN
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 数字使用相应的加密策略传递一个字符串后Java实现代码
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- Delphi判断字符串是否是数字、字母、大小写字母
- Delphi 判断一个字符串是否为数字
- (转)判断一个字符串是否全是数字的多种方法及其性能比较(C#实现
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 递归实现10进制转8进制,字符串数字互转,判断数组正逆向
- Delphi判断字符串是否是数字、字母、大小写字母
- Object-C 实现判断一个字符串是否是数字
- 在delphi中判断字符串是否数字,以及精度处理函数
- Delphi 判断一个字符串是否为数字
- 递归实现10进制转8进制,字符串数字互转,判断数组正逆向
- delphi 判断一个字符串是否只由数字组成
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- Delphi判断字符串是否是数字、字母、大小写字母