gpt4 book ai didi

delphi - 在 Delphi 2006 中从 WideString 中删除空字符

转载 作者:行者123 更新时间:2023-12-03 15:17:38 30 4
gpt4 key购买 nike

我有一个包含一些数据的 WideString 变量,但是当为字符串分配一些额外的空值时,这些空值或多或少地添加在数据中的随机位置。我现在需要从变量中去除这些空值。如果它是一个字符串,我会检查每个 Char 是否 Char(x) = 0,但由于这是一个 WideString,我认为这不起作用?我怎样才能最好地去除这些?

我使用的是 Delphi 2006

最佳答案

您看到的可能不是空字符。它们可能只是代码点值小于 256 的字符的高八位。

如果字符串中确实存在不应该存在的空字符,那么您应该做的第一件事就是弄清楚它们是如何到达那里的。如果它们在不应该出现的时候出现,那么您的程序中可能存在错误。

如果生成字符串的代码没有错误,并且仍然有不需要的空字符,那么您可以相当轻松地删除它们。从字符串中删除内容的常见方法是使用 Delete标准功能。您可以使用 # 语法通过数值指定任何字符,编译器通常可以确定它是否需要表示 AnsiChar 或 WideChar。

procedure RemoveNullCharacters(var s: WideString);
var
i: Integer;
begin
i := 1;
while i < Length(s) do
if s[i] = #0 then
Delete(s, i, 1)
else
Inc(i);
end;

但这可能会多次重新分配字符串(每个空字符一次)。为了避免这种情况,您可以就地打包字符串:

procedure RemoveNullCharacters(var s: WideString);
var
i, j: Integer;
begin
j := 0;
for i := 1 to Length(s) do
if s[i] <> #0 then begin
Inc(j);
s[j] := s[i];
end;
if j < Length(s) then
SetLength(s, j);
end;

这些函数适用于任何 Delphi 的字符串类型;只需更改参数类型即可。

关于delphi - 在 Delphi 2006 中从 WideString 中删除空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3684677/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com