关于固定长度的string问题(100分)

  • 主题发起人 主题发起人 ice_cream
  • 开始时间 开始时间
I

ice_cream

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一些不定长度的字符,比如‘1’‘10’,‘100’
我想把它们组合成一个字符串,格式为‘001010100’
该如何实现,谢了
 
var s:string;
s:='1'+'10'+'100';
 
什么意思?‘+’就可以了
 
对呀,直接加起来就中了。
 
我可能说的不是很明白,
我是想把一些字符串变量组合成一个字符串,
事先并不知道是些什么数字
 
var a,b,c,s:string;

s:=a+b+c;
 
你还没有说明白
一些字符是存在哪里的?
如果是变量中
a:=1;
b:=2;
c:=intToStr(a)+intToStr(b);
 
function MyFmt(const S: string): string;
begin
if Length(S) < 3 then
Result := StringOfChar('0', 3 - Length(S)) + S
else
Result := S;
end;
s := MyFmt('1') + MyFmt('10') + MyFmt('100');
 
就是把str1,str2,str3……合并到一个str中
当我copy(str,0,3)时,就是str1,当我copy(str,3,3)时,就是str2
依次类推
 
就是加前導零嗎
function IntToPreZeroStr(const Value: Integer
const Digits: Byte) : String;
var
str_TmpResult : string;
begin
str_TmpResult := IntToStr(Value);
while Length(str_TmpResult) < digits do
Insert('0' ,str_TmpResult, 1);
Result := str_TmpResult;
end;
 
建议如果是所有值如'1','01','1000'这样的值最好还是用INTEGER吧,用位移就很好地实现了,这样也增加了速度,灵活
 
a:=strtoint('1')
b:=strtoint('10')
c:=strtoint('100');
d:=1,000,000,000;
d:=d+a*1,000,000+b*1,000+c;
str:=copy(inttostr(d),2,9)
 
补充:为了让你看清位数才打的逗号,实际不打
 
procedure TForm1.Button1Click(Sender: TObject);

function FormatStr(const S: string
X: Integer): string;
begin
if Length(S) < x then
Result := StringOfChar('0', x - Length(S)) + S
else
Result := S;
end;

var
a,b,c: String;
Str: String;
begin
a := Edit1.Text;
b := Edit2.Text;
c := Edit3.Text;
Str := FormatStr(a, 4) + FormatStr(b, 3) + FormatStr(c, 3);
end;
 
直接加前导零就可以
 
多谢各位了
 
后退
顶部