我有以下带有此代码的字符串:
test:='{test}test{test}';
我的想法是修改它以使其如此
{ t e s t } t e s t { t e s t }
我需要的是所有文本都有一个字母空间
谁能解释一下我是怎么做的?
我有以下带有此代码的字符串:
test:='{test}test{test}';
我的想法是修改它以使其如此
{ t e s t } t e s t { t e s t }
我需要的是所有文本都有一个字母空间
谁能解释一下我是怎么做的?
以下函数可以解决问题:
function SpaceString(const S: string): string;
var
i: Integer;
begin
SetLength(result, 2*Length(S));
for i := 1 to Length(S) do
begin
result[2*i - 1] := S[i];
result[2*i] := #32;
end;
end;
如果你不想要最后的空格:
function SpaceString(const S: string): string;
var
i: Integer;
begin
SetLength(result, 2*Length(S) - 1);
for i := 1 to Length(S) do
result[2*i - 1] := S[i];
for i := 1 to Length(S) - 1 do
result[2*i] := #32;
end;
或者干脆截断 ( SetLength(result, Length(result) - 1)
) 最后在第一个版本中创建的字符串。
也就是说,我以某种方式怀疑您的真正问题是关于字符编码。t h i s
实际上,假设原始字符串不包含任何多字节字符,则Unicode (UTF-16) 字符串将看起来像解释为 ASCII(或 ANSI)。[当然,在这种情况下,“空格”实际上不是空格 ( #32
),而是 NUL 字符 ( #0
)。]
如果真的是这样,那么您可以完全忘记我上面的功能。相反,您应该正确对待编码。如果您使用的是 Delphi 2009+,则string
类型为 Unicode(每个字符两个字节);在早期版本的 Delphi 中,它不是(每个字符一个字节)。