Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi在字符串列表之间提取文本_Delphi_Extract - Fatal编程技术网

Delphi在字符串列表之间提取文本

Delphi在字符串列表之间提取文本,delphi,extract,Delphi,Extract,我需要从字符串列表中提取文本?这工作得非常好,因此此提取仅来自字符串。我需要从Tmemo中的列表中提取 谢谢 function ExtractTextBetween(const Input, Delim1, Delim2: string): string; var aPos, bPos: Integer; begin result := ''; aPos := Pos(Delim1, Input); if aPos > 0 then begin bPos := Po

我需要从字符串列表中提取文本?这工作得非常好,因此此提取仅来自字符串。我需要从Tmemo中的列表中提取

谢谢

function ExtractTextBetween(const Input, Delim1, Delim2: string): string;
var
  aPos, bPos: Integer;
begin
  result := '';
  aPos := Pos(Delim1, Input);
  if aPos > 0 then begin
    bPos := PosEx(Delim2, Input, aPos + Length(Delim1));
    if bPos > 0 then begin
      result := Copy(Input, aPos + Length(Delim1), bPos - (aPos + Length(Delim1)));
    end;
  end;
end;

不明白为什么不适当划界,我只需要提取电子邮件

示例字符串

“电子邮件”:xxxx@xxxx.xom“,”上限“:”00000“

结果 xxxx@xxxx.xom“,”帽


不清楚你想要什么。是否要提取
TMemo
中每行的文本?那么你希望结果是什么,也许是一个
TStringList
TMemo
有一个
Lines
属性,所以只需迭代这些属性,并使用现有函数为每个属性提取。将它们添加到
TStringList
。除非你想要不同的东西,否则你需要解释更多。除了@Lougler说的,如果你想从备忘录的全文中提取,你可以使用
TMemo.Lines.text
属性。如果您想访问单个行,请像使用数组一样使用
TMemo.lines
。您是否考虑过其他注释中提供的内容?这里有很多东西可以帮助您入门。您的输入是什么样子的?您需要知道如何编写循环吗?似乎您正在尝试手动解析JSON。绝对不是个好主意。您可以使用JSON库,包括Delphi内置的JSON库。不管怎样,我看不出这是如何回答你的问题的。长话短说,如果你在9小时前提出问题时选择使用一个合适的JSON库,那么你现在已经远远超过了这个问题。JSON不是基于换行符的格式,整个JSON可以在一行中,或者您可能期望的是一行实际上可能有5行空行。
memo3.Lines.AddStrings(ExtractText(memo2.Text,',"email":"','",')) ;
function ExtractText(const Str: string; const Delim1, Delim2: string): TStringList;
var
  c,pos1, pos2: integer;
begin
  result:=TStringList.Create;
  c:=1;
  pos1:=1;

  while pos1>0 do
  begin
    pos1 := PosEx(Delim1, Str,c);
    if pos1 > 0 then begin
      pos2 := PosEx(Delim2, Str, pos1+1);
    if pos2 > 0 then
      result.Add(Copy(Str, pos1 + length(delim1), pos2 - (length(delim2) + pos1)));
      c:=pos1+1;
     end;

  end;