你可以使用StringReplace:
var
str:String;
begin
str:='The_aLiEn'+Chr(VK_TAB)+'Delphi';
ShowMessage(str);
str:=StringReplace(str, chr(VK_Tab), '', [rfReplaceAll]);
ShowMessage(str);
end;
这会省略给定字符串中的所有制表符。但是你可以改进它,如果你想删除前导和尾随标签,那么你也可以使用 Pos 功能。
编辑:
对于询问如何使用 Pos 进行操作的评论,这里是:
var
str:String;
s, e: PChar;
begin
str:=Chr(VK_TAB)+Chr(VK_TAB)+'The_aLiEn'+Chr(VK_TAB)+'Delphi'+Chr(VK_TAB)+Chr(VK_TAB);
s:=PChar(str);
while Pos(Chr(VK_TAB), s)=1 do inc(s);
e:=s;
inc(e, length(s)-1);
while Pos(Chr(VK_TAB), e)=1 do dec(e);
str:=Copy(s, 1, length(s)-length(e)+1);
ShowMessage(str);
end;
当然,这与 Maksee 的相同方法是一样的,而且要做的工作更多。但是,如果没有太多时间来完成这项工作,并且如果 Pos 是您首先想到的,那么可以这样做。你,程序员应该并且必须考虑优化,而不是我。如果我们在谈论优化的约束,稍微调整一下用 char compare 替换 Pos,这将比 Maksee 的代码运行得更快。
为 Substr 搜索泛化编辑:
function TrimStr(const Source, SubStr: String): String;
var
s, e: PChar;
l: Integer;
begin
s:=PChar(Source);
l:=Length(SubStr);
while Pos(SubStr, s)=1 do inc(s, l);
e:=s;
inc(e, length(s)-l);
while Pos(SubStr, e)=1 do dec(e, l);
Result:=Copy(s, 1, length(s)-length(e)+l);
end;