delphi中如何实现类似SQL中字符左右补齐的功能?例如要求STR1的长度为5,但实际只有3能否实现用某个字符(空格或0)来补齐其长度:'00str1'

解决方案 »

  1.   

    给你三个小函数,自己很早写的,一直用着,没有优化,分别是在右边补,在左边补,在两边补。参数说明 :instring  是你原来的字符串,如STR1
              numchars  是你想要的最终长度,如5
              fmtstr    是你想要填充的字符,如0                   自己试试吧。
    function padr(instring:string;numchars:byte;fmtstr:char):string;
    begin
      if numchars<=length(trim(instring)) then
         begin
           result:=copy(trim(instring),1,numchars);
         end
      else
        begin
           result:=trim(instring)+stringofchar(fmtstr,numchars-length(trim(instring)));
        end;
    end;function padl(instring:string;numchars:byte;fmtstr:char):string;
    begin
      if numchars<=length(trim(instring)) then
         begin
           result:=copy(trim(instring),1,numchars);
         end
      else
        begin
           result:=stringofchar(fmtstr,numchars-length(trim(instring)))+trim(instring);
        end;
    end;function padc(instring:string;numchars:byte;fmtstr:char):string;
    begin
      if numchars<=length(trim(instring)) then
         begin
           result:=copy(trim(instring),1,numchars);
         end
      else
        if  odd(numchars-length(trim(instring))) then
          begin
           result:=stringofchar(fmtstr,((numchars-1-length(trim(instring))) div 2))+trim(instring)+stringofchar(fmtstr,((numchars+1-length(trim(instring))) div 2));
          end
        else
          begin
           result:=stringofchar(fmtstr,((numchars-length(trim(instring))) div 2))+trim(instring)+stringofchar(fmtstr,((numchars-length(trim(instring))) div 2));
          end;end;