送分(关于字符串操作)(50分)

  • 主题发起人 主题发起人 wzhbjby
  • 开始时间 开始时间
W

wzhbjby

Unregistered / Unconfirmed
GUEST, unregistred user!
我想对字符串进行加1操作
如:0102003加1后为0102004
aacc加1后为aacd
请高手指教!
 
使用StrToInt函数,然后进行加1操作,最后使用IntToStr还原为字符串
 
function(s:string):string;
var
a:array of char;
s:='0102003';
setlength(a,length(s));
move(s,a,length(s));
s[length(s)]:=chr(ord(s[length(s)])+1);
move(a,result,high(a)+1);
end;
 
对于“整数”型字符串进行加1操作
如:0102003加1后为0102004
可以用StrToInt函数,+1后,用IntToStr函数还原为字符串

对如:aacc加1后为aacd
可以把字符串转化为ASCII码,然后+1,再由ASCII码转化为字符串
 
字符串加1,要用ord和chr函数,比如要对edit框里的字符做加1操作:
var a:string;
b:integer;
begin
a:=edit1.text;
b:=length(a);
//showmessage(inttostr(ord('z'))); //测出z的ascii值为122
if ord(a)<122 then //ord将字符转为Ascii码
a:=copy(a,1,b-1)+chr(ord(a)+1) //chr将序数转为字符
else a:=copy(a,1,b-2)+chr(ord(a[b-1])+1)+'a';
edit1.text:=a;
end;
 
TO cb422,zhaomh
用strtoint函数转换后+1,再转换回来是,字符串前面的0会丢掉。
 
确定你要的数的位数,转换完后,补齐,以前作国,现在没有源程序了
 
补0不是很简单?转换前先用length函数得出长度,转换加1后再转回来,计算一下长度差,
再根据差数补0不就行了。
 
procedure TForm1.Button1Click(Sender: TObject);
var
S:String;
I:Integer;
begin
try
S:=Edit1.Text;
I:=StrToInt(S);
Inc(I);
S:=IntToStr(I);
Edit2.Text:=S;
except
begin
S:=Edit1.Text;
I:=Length(S);
S:=Chr(Ord(S)+1);
Edit2.Text:=S;
end;
end;
end;
 
使用StrToInt函数,然后进行加1操作,最后使用IntToStr还原为字符串
在转换的前后用length函数来判断字符串的长度,如果长度不一样就用一个FOR
循环将0补齐
 
不错,补零。
 
var
s,sa:string;
ac:array of char;
n:integer;
begin
s:='013234';
n:=length(s);
setlength(ac,n);
move(s,ac,length(s));
// ac[n-1]:=chr(ord(ac[n-1])+1);
// showmessage(ac[n-1]);
move(ac,sa,length(s));
showmessage(sa);
请问我这段程序哪里出错,总是提示地址访问错误
 
如果是acdbz+1呢?怎么办?是acdca吗?
 
如果是acde1z,又怎么办?acde2a!?
 
如果是zzzzzzz呢,aaaaaaa!?
 
HUterTeam的方法最接近我我想法!给分!谢谢各位!
 
后退
顶部