在delphi的字符串中怎么插入“不定个“空格
在delphi的字符串中如何插入“不定个“空格
想对一个多行的文本进行排版,要进行字符串的对齐操作,现想把如下格式的字符串:
The first line is your name
The second line is address
where are you born? BeiJing
变成
The first line is your name
The second line is address
where are you born? BeiJing
注意,yourname、is address、BeiJing这些要对齐的。。。
我想在它们的前边加入不定量的空格来实现对齐,但是如下
FinishedArray[k]:=NewArray[i]+SpaceNum*#9+NewArray[i+1];
是不合法的,不能用一个变量去乘一个空格,我试过,40*#9、40*' ',都不行。。。
请问怎么才能在其中加入数量不定的空格而让它们对齐呢?
------解决方案--------------------
想对一个多行的文本进行排版,要进行字符串的对齐操作,现想把如下格式的字符串:
The first line is your name
The second line is address
where are you born? BeiJing
变成
The first line is your name
The second line is address
where are you born? BeiJing
注意,yourname、is address、BeiJing这些要对齐的。。。
我想在它们的前边加入不定量的空格来实现对齐,但是如下
FinishedArray[k]:=NewArray[i]+SpaceNum*#9+NewArray[i+1];
是不合法的,不能用一个变量去乘一个空格,我试过,40*#9、40*' ',都不行。。。
请问怎么才能在其中加入数量不定的空格而让它们对齐呢?
------解决方案--------------------
- Delphi(Pascal) code
function getSpace(j:integer):string; var I:Integer; s:string; begin s:=''; for i:=0 to 10 do begin s:=s+' '; end; result:=s; end;
------解决方案--------------------
使用 Format 函数
Memo1.Lines.Add(Format('%-30s%s',['aaa','bbb']));
Memo1.Lines.Add(Format('%-30s%s',['aaaaaaa','bbbbbb']));
Memo1.Lines.Add(Format('%-30s%s',['aaaaaaaaaa','bbbbbbbbb']));
注意一些字体的空格和字母大小是不一样的,即使字符数一致,仍然不会对齐;这种情况下请选择宋体,中文=两个半角英文字符=两个半角空格。
------解决方案--------------------
for i:=0 to FinishedArray.counte-1 do
memo1.lines.add(FinishedArray[i])
------解决方案--------------------
我不太懂,看看这个函数能不能帮上忙:StringOfChar
S := StringOfChar(' ', N); //产生空格
------解决方案--------------------
或者这样都不用你去算长度的,假设补好空格后的“The first line is ”的长度是20
const cSpaceString = ' ';
FinishedArray[k]:=Copy(NewArray[i] + cSpaceString, 1, 20) + NewArray[i+1];