delphi实现字符串中数字的判断及相应数字累加
最近面试了一家企业,下面有一道从来没有想过的问题,当时有思路,不过写不出来.回来后,调试了一下,发现还是有难度的,写上来看大家是否还有更优化的写法,欢迎讨论:
下面实现将字符串"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;
&nb
相关文档:
procedure TForm1.Button2Click(Sender: TObject);
var
name:String ;
begin
name := edit2.Text ;
name := '%' + name ;
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select * from gjh_t where name like '''+name+'''') ;
&nb ......
我的办法,增加一个timer 设置间隔100ms,通过timer的使能否,控制报警声音开关
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Windows.Beep(1200+i_f,10+i_f);
if i_f<2000 then
begin
inc(i_f);
end
end;
== ......
在开讲之前,首先,我假设你了解什么是面向对象,什么是类。如果不了解的话,建议先去了解一下相关知识!
在Delphi中,组件,我们可以将它理解为一个个的封装好了的功能对象库,使用这个库,就只用简单的几句代码,甚至仅仅简单的设置几个属性就能实现某些
功能,我们可以将组件想象成日常生活中使用的某些 ......
在网上看到很多人都在为Delphi是否支持C++/Java中的静态变量及静态方法的功能而困扰,其实这在Delphi中是很简单的.
静态方法就是使用Class Function. 静态变量则使用单元局部变量来实现. 代码如下:
//=========================================
// StaticVarTestU - 定义了可以计数的类,通过类方法即可访问此类的对象数 ......