查找并复制字符串旁边的文本

时间:2018-01-07 12:41:10

标签: delphi firemonkey delphi-10.2-tokyo

我想搜索ini中字符串或文本旁边的文字并将其复制或直接从TINI读取到TEdit

[Section]
Indent=AA1:BB2ac:CC35sda:DDWord`

我想在TEdit中显示CC旁边的文字,即35sda。

我尝试了copy功能,但没有尝试posposex()功能。 谢谢。

1 个答案:

答案 0 :(得分:3)

这只是一个基本的字符串解析问题,例如Pos()PosEx()Copy(),例如:

Ini := TMemIniFile.Create('file.ini');
try
  S := Ini.ReadString('Section', 'Indent', '');
  StartIdx := Pos(':CC', S) + 3;
  EndIdx := PosEx(':', S, StartIdx);
  Edit1.Text := Copy(S, StartIdx, EndIdx - StartIdx);
finally
  Ini.Free;
end;

或者,使用TStringHelper

Ini := TMemIniFile.Create('file.ini');
try
  S := Ini.ReadString('Section', 'Indent', '');
  StartIdx := S.IndexOf(':CC') + 3;
  EndIdx := S.IndexOf(':', StartIdx);
  Edit1.Text := S.Substring(StartIdx, EndIdx - StartIdx);
finally
  Ini.Free;
end;

或者,您可以使用TStringList来帮助您解析,例如:

Ini := TMemIniFile.Create('file.ini');
try
  SL := TStringList.Create;
  try
    SL.Delimiter := ':';
    SL.StrictDelimiter := True;
    SL.DelimitedText := Ini.ReadString('Section', 'Indent', '');
    Edit1.Text := Copy(SL[2], 3, MaxInt);
    // or:
    // Edit1.Text := SL[2].Substring(2);
  finally
    SL.Free;
  end;
finally
  Ini.Free;
end;