是否可以逐行搜索TextFile以查找特定字符串。 即。你好 它一行一行地查找是否有任何一行有Hello。每行只有一個字符串。 這可能嗎? 如果是這樣,我該如何嘗試?搜索具有特定字符串的行的文本文件
回答
將整個文件加載到內存當然是最容易的。只要您的文件足夠小,那麼你可以做這樣的:
found := false;
sl := TStringList.Create;
try
sl.LoadFromFile(fileName);
for line in sl do
if Pos('Hello', line)<>0 then
begin
found := true;
break;
end;
finally
sl.Free;
end;
我認爲,當你說
如有線,它有你好
,你是尋找包含搜索字符串的行而不是等於搜索字符串的行。
在評論你問:
好吧我可以接着問,如果有可能問到 如何刪除從一個編輯框中鍵入了一個文件的字符串?所以 你輸入一個字符串到編輯框然後它搜索文件 它並刪除該行?
這是上面的一個很容易變化:
procedure RemoveLinesContaining(const fileName, searchText: string);
var
sl: TStringList;
i: Integer;
begin
sl := TStringList.Create;
try
sl.LoadFromFile(fileName);
for i := sl.Count-1 downto 0 do
if Pos(searchText, sl[i])<>0 then
sl.Delete(i);
sl.SaveToFile(fileName);
finally
sl.Free;
end;
end;
此功能刪除包含搜索字符串所有線。如果您只想刪除第一個這樣的行,那麼在調用Delete之後跳出for循環。
循環變量降序以允許循環修改列表。
如果你想使用不同的測試,說平等而不是包含,然後簡單地修改if語句。
+1這個假設可能是正確的,但我在閱讀問題時錯過了。 – jpfollenius
一個簡單的方法是使用TStringList.LoadFromFile
加載文件,然後檢查IndexOf('hello')
- 如果它大於-1
,則字符串在文件中。
var
sl : TStringList;
ix : Integer;
begin
sl := TStringList.Create;
try
sl.LoadFromFile('test.txt');
ix := sl.IndexOf('Hello');
if ix > -1 then ShowMessage('Yup, the file contains a greeting.');
finally
sl.Free;
end;
end;
如果你使用'try''' finally代碼會更好# – jpfollenius
Ok我可以問一下是否可以問如何刪除從文件中的編輯框輸入的字符串。 所以你輸入一個字符串到一個編輯框然後它搜索它的文件並刪除該行? –
如果文件真的很大,你會用盡內存(@MattBiggs你應該首先回答David對你的問題的評論 –
- 1. 搜索文本文件中的特定字符串
- 2. 如何搜索包含特定文本字符串的文件?
- 3. 搜索文本文件的字符串
- 4. 搜索特定行的文本文件
- 5. Eclipse的文件搜索 - 如何搜索特定字符串
- 6. 的Perl:刪除文本文件具有特定字符串
- 7. 搜索文件中的字符串並返回該特定行
- 8. c#搜索特定字符串的文本文件並獲取文件路徑
- 9. 如何搜索包含特定字符串的所有文件?
- 10. C++搜索特定字符串的文本文件,並返回該字符串所在的行號
- 11. 文本文件解析 - 如何搜索特定字符串並返回整行?
- 12. Perl腳本:從具有多個文件的文件夾中搜索字符串
- 13. 文本搜索字符串
- 14. 在文本文件的最後一行中搜索字符串
- 15. 在文件中查找具有特定字符串的行數
- 16. 在數組列表中搜索特定的文本字符串
- 17. VBA是否可以搜索具有特定字體的文本
- 18. 搜索特定字符的字符串
- 19. 我怎樣才能從文本文件中搜索特定的字符串?
- 20. 在5000多個文本文件中搜索特定的字符串。
- 21. 搜索字符串文件
- 22. Shell腳本,字符串搜索文件
- 23. 搜索具有特定文件內容的文件
- 24. 搜索文本中的特殊字符
- 25. Python:在文件中搜索特定的字符串
- 26. Python 3:搜索文件中的特定字符串
- 27. 搜索特定字符串
- 28. 在一個文本文件中的所有行搜索字符串:Python的
- 29. 搜索特定字的字符串。 C#
- 30. 返回行號或文本文件字符串搜索
準備好將整個文件加載到內存中,還是需要將其加載到較小的塊中? –