由于您已经在使用 Indy,您可以使用它的SplitColumnsNoTrim()
功能将 a 拆分String
为TStrings
使用分隔符字符串,其中可以包含多个字符。顾名思义,SplitColumnsNoTrim()
不会在分隔的子字符串之间应用任何修剪。如果要修剪,请SplitColumns()
改用。
var
Strm: TStringStream;
Strings: TStringList;
begin
Strings := TStringList.Create;
try
Strm := TStringStream.Create;
try
IdHTTP.Get('http://...', Strm);
SplitColumnsNoTrim(Strm.DataString, Strings, '[eol]');
finally
Strm.Free;
end;
// use Strings as needed ...
finally
Strings.Free;
end;
end;
不过,我不建议使用 aTStringStream
进行这种解析。 TStringStream
在 D2009+ 中要求您在其构造函数中指定 a TEncoding
(或让它默认为 OS 默认 Ansi 编码),如果您TIdHTTP
直接下载到TStringStream
. 您不会提前知道数据的字符集,除非数据始终是 ASCII。 TIdHTTP
具有String
使用数据的实际字符集将下载的数据解码为 a 的逻辑,因此您应该改用该功能,例如:
var
Strings: TStringList;
begin
Strings := TStringList.Create;
try
SplitColumnsNoTrim(IdHTTP.Get('http://...'), Strings, '[eol]');
// use Strings as needed ...
finally
Strings.Free;
end;
end;