このコードには次の文字列があります。
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 (1 文字あたり 2 バイト) です。Delphi の以前のバージョンでは、そうではありません(1 文字あたり 1 バイト)。