删除ansiString中的char

时间:2015-01-28 04:58:25

标签: delphi delphi-xe2

我有这个ansiString例如

DISC506002000001008100021041511207123051520515308154091550920TN177869-0151J1     36J207 70077       0                 0

尝试提取TN177869-0151J1

但我正在使用的代码不断返回整个ansistring。

function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring;
var
   ExtraData: Ansistring;
begin
    extraData := data;
    Delete(extraData,76,30);
    Delete(extraData,0,61);
    result:=extraData;
end;

我做错了什么?是因为它是一个ansistring而不是字符串?那让我失望了?

2 个答案:

答案 0 :(得分:9)

您的代码无效,因为您在Delete方法的参数中传递了错误的值。无论如何,您可以使用Copy功能,而不是像这样

function TForm5.ParseDataPartNumber(const Data: AnsiString): ansistring;
begin
    Result:=Copy(Data, 62,15);
end;

答案 1 :(得分:2)

字符串是基于1的,因此将第二次删除更改为索引1而不是0.

即:

function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring;
var
   ExtraData: Ansistring;
begin
    extraData := data;
    Delete(extraData,77,43);
    Delete(extraData,1,61);
    result:=extraData;
end;

你的索引也错误地提取了那个字符串。我的答案显示了更改的值。