查找并复制字符串旁边的文本
Finding and copy a text next to a string
我想搜索写在字符串或 ini 中文本旁边的文本并将其复制或直接从 TINI
读取到 TEdit
。
即
[Section]
Indent=AA1:BB2ac:CC35sda:DDWord`
我想在 TEdit
中显示 CC 旁边写的文本,即 35sda。
我尝试了 copy
函数,但没有尝试 pos
和 posex()
函数。
谢谢。
这只是基本的字符串解析问题,例如Pos()
, PosEx()
, and 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;
我想搜索写在字符串或 ini 中文本旁边的文本并将其复制或直接从 TINI
读取到 TEdit
。
即
[Section]
Indent=AA1:BB2ac:CC35sda:DDWord`
我想在 TEdit
中显示 CC 旁边写的文本,即 35sda。
我尝试了 copy
函数,但没有尝试 pos
和 posex()
函数。
谢谢。
这只是基本的字符串解析问题,例如Pos()
, PosEx()
, and 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;