50分,小问题(50分)

  • 主题发起人 主题发起人 kingkong
  • 开始时间 开始时间
K

kingkong

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个补满0的函数,举例如下:

可将101左边补0变为 00000000101
可将101右边补0变为 10100000000
可将101左右两边居中补0变为00001010000
这个"101"可为任意字符, 比如"中国","aaaa"在这里以它为例而已,补0的数量
也可以是任意的.

我已有如下左边补0的函数,但后来听说可以用format来完成,用不着我这样费事,
不知怎么做,如果format达到左边补0 那么能否用format完成右边补0和左右两边
居中补0,请各位大虾指教

function Qd0str(const count,num:integer):String;
var
s1,s2:String;
begin
s1:=IntToStr(Num);
s2:='00000000000000000000';
if (Length(s1)>=count) then
s2:=''
else if(count>20) then
SetLength(S2,20-Length(s1))
else
SetLength(S2,count-Length(s1));
Result:=S2+S1;
end;
 
右边补0更简单
 
to hamsoft:
"右边补0更简单",你这是什么意思,说说.........

 
我只知道用Format('%8s',['010'])和Format('%-8s',['010'])分别可以在右边和左边补空格
不知道如何补零,
特别是第三个问题,更是不知道怎么处理,你怎么确定左边右边分别要补几个零
 
formatflaot('000000000',n)左边补0
s:=inttostr(n)+copy('00000000',1,几个0-length(inttostr(n))右边补0
s:='00000'+s+'00000'
 
还有其它更好的方法吗?
 
function Format0Str(Left,Right:Integer;source:String;Tobefilled:Char):String;
var i:Integer;
begin
result='';

if Left<>0 then
for i:=0 to left-1 do
Result:=Result+TobeFilled;

Result:=Result+Source;

if Right<>0 then
for i:=0 to Right-1 do
Result:=Result+ToBeFilled;
end;
 
多人接受答案了。
 
后退
顶部