Delphi 删除字符';他在回答问题
我有这个例子Delphi 删除字符';他在回答问题,delphi,delphi-xe2,Delphi,Delphi Xe2,我有这个例子 DISC506002000001008100021041511207123051520515308154091550920TN177869-0151J1 36J207 70077 0 0 正在尝试提取TN177869-0151J1 但是我使用的代码一直在返回我所有的答案 function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring; var ExtraDa
DISC506002000001008100021041511207123051520515308154091550920TN177869-0151J1 36J207 70077 0 0
正在尝试提取TN177869-0151J1
但是我使用的代码一直在返回我所有的答案
function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring;
var
ExtraData: Ansistring;
begin
extraData := data;
Delete(extraData,76,30);
Delete(extraData,0,61);
result:=extraData;
end;
我做错了什么?这是因为它是一个ansistring而不是string吗?这让我很生气?您的代码无法工作,因为您在方法的参数中传递了错误的值。无论如何,你可以像这样使用这个函数
function TForm5.ParseDataPartNumber(const Data: AnsiString): ansistring;
begin
Result:=Copy(Data, 62,15);
end;
字符串基于1,因此将第二次删除更改为索引1而不是0 即:
您的索引也错误,无法提取该字符串。我的回答显示了价值观的变化 当前公认的答案更好地解决了OP的原始问题,但从性能角度来看,这是OP应该实现的解决方案。1次拷贝比2次删除快很多。@Lieven与其说是性能不如说是清晰和简单。性能是一个很好的结果。没错,这使它变得更好。OP可以吃蛋糕,也可以吃蛋糕。为什么不使用
Copy()
?
function TForm5.ParseDataPartNumber(Data: AnsiString):ansistring;
var
ExtraData: Ansistring;
begin
extraData := data;
Delete(extraData,77,43);
Delete(extraData,1,61);
result:=extraData;
end;