Delphi 7 从备注行中删除一些字符
Delphi 7 delete some character from memo lines
我在备忘录中有这样几行:
111111.kll
222222.kll
我需要从每行中删除最后 4 个字符以获得如下结果:
111111
222222
使用for
loop, you can iterate over the lines. Using copy
,你可以获取一行的一部分并将其分配回行:
for i := 0 to Memo1.Lines.Count - 1 do
Memo1.Lines[i] := Copy(Memo1.Lines[i], 1, Length(Memo1.Lines[i]) - 4);
现在,更改备忘录的行不是很快,因此如果您有很多行,您可能需要改用字符串列表。您可以处理字符串列表中的所有行,完成后才将它们放回备忘录中。这样,备忘录的内容只会改变一次:
var
i: Integer;
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.Text := Memo1.Text;
for i := 0 to sl.Count - 1 do
sl[i] := Copy(sl[i], 1, Length(sl[i]) - 4);
Memo1.Text := sl.Text;
finally
sl.Free;
end;
end;
作为 GolezTrol 解决方案的替代方案,您可以直接操作备忘录内容,而不是先在内存中复制它:
var
i, LineStart, LineLen: Integer;
begin
Memo1.Lines.BeginUpdate;
try
for i := 0 to Memo1.Lines.Count - 1 do
begin
LineStart := Memo1.Perform(EM_LINEINDEX, i, 0);
LineLen := Memo1.Perform(EM_LINELENGTH, LineStart, 0);
Memo1.Perform(EM_SETSEL, LineStart + LineLen - 4, LineStart + LineLen);
Memo1.SelText := '';
end;
finally
Memo1.Lines.EndUpdate;
end;
end;
嗯,有一个特定的功能来替换字符。例如,如果您想删除“.kll”,则无需使用循环。
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,'.kll','',[rfReplaceAll, rfIgnoreCase]);
希望对您有所帮助!
我在备忘录中有这样几行:
111111.kll
222222.kll
我需要从每行中删除最后 4 个字符以获得如下结果:
111111
222222
使用for
loop, you can iterate over the lines. Using copy
,你可以获取一行的一部分并将其分配回行:
for i := 0 to Memo1.Lines.Count - 1 do
Memo1.Lines[i] := Copy(Memo1.Lines[i], 1, Length(Memo1.Lines[i]) - 4);
现在,更改备忘录的行不是很快,因此如果您有很多行,您可能需要改用字符串列表。您可以处理字符串列表中的所有行,完成后才将它们放回备忘录中。这样,备忘录的内容只会改变一次:
var
i: Integer;
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.Text := Memo1.Text;
for i := 0 to sl.Count - 1 do
sl[i] := Copy(sl[i], 1, Length(sl[i]) - 4);
Memo1.Text := sl.Text;
finally
sl.Free;
end;
end;
作为 GolezTrol 解决方案的替代方案,您可以直接操作备忘录内容,而不是先在内存中复制它:
var
i, LineStart, LineLen: Integer;
begin
Memo1.Lines.BeginUpdate;
try
for i := 0 to Memo1.Lines.Count - 1 do
begin
LineStart := Memo1.Perform(EM_LINEINDEX, i, 0);
LineLen := Memo1.Perform(EM_LINELENGTH, LineStart, 0);
Memo1.Perform(EM_SETSEL, LineStart + LineLen - 4, LineStart + LineLen);
Memo1.SelText := '';
end;
finally
Memo1.Lines.EndUpdate;
end;
end;
嗯,有一个特定的功能来替换字符。例如,如果您想删除“.kll”,则无需使用循环。
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,'.kll','',[rfReplaceAll, rfIgnoreCase]);
希望对您有所帮助!