在内存流(和多个字符串)中搜索字符串并返回true或false的最简单方法是什么?
答案 0 :(得分:2)
var ms:TMemoryStream;
strS:TStringStream;
aStr:string;
aPos:integer;
found:boolean;
begin
ms:=TMemoryStream.Create;
ms.LoadFromFile('c:\aFile.txt');
strS:=TStringStream.Create;
strS.LoadFromStream(ms);
aPos:=pos(aStr,strS.dataString);
found:=aPos>0;
end;
TStringStream是一个经常被遗忘但非常有用的工具 - 比弄乱pChars等更容易,更安全。
对于多次搜索,要么使用pos,substring等进行ackwardly循环,要么使用RegEx。
这段代码在Delphi XE中运行良好,虽然TStringStream很老 - 不确定它是否符合unicode。
(这个例子是漏洞的 - 为了简洁起见,我省略了终结代码)