Est-il possible de rechercher une chaîne de caractères par ligne pour trouver une chaîne spécifique? ie. Hello Il recherche ligne par ligne pour trouver si une ligne contient Hello. Il n'y aura qu'une seule chaîne par ligne. Est-ce possible? Si oui, comment puis-je tenter cela?Rechercher TextFile for Line avec une chaîne spécifique
Répondre
Il est certainement plus facile de charger le fichier entier en mémoire. A condition que votre fichier est assez petit, vous pouvez le faire comme ceci:
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;
Je suppose que lorsque vous dites
si une ligne a Bonjour dans ce
que vous êtes rechercher des lignes contenant la chaîne de recherche plutôt que des lignes égales à la chaîne de recherche.
Dans un commentaire, vous demandez:
Ok je peux demander alors s'il serait possible de demander sur la façon de supprimer une chaîne qui est tapé à partir d'une zone d'édition d'un fichier? Donc, vous entrez une chaîne dans une zone d'édition, puis il recherche le fichier et supprime cette ligne?
C'est une variation assez facile de ce qui précède:
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;
Cette fonction supprime toutes lignes contenant la chaîne de recherche. Si vous souhaitez uniquement supprimer la première ligne, quittez la boucle for après l'appel de Delete.
La variable de boucle descend pour permettre à la boucle de modifier la liste.
Si vous souhaitez utiliser un test différent, dites égalité plutôt que contient, puis modifiez simplement l'instruction if.
+1 pour l'hypothèse qui est probablement juste mais que j'ai manqué en lisant la question. – jpfollenius
Un moyen facile est d'utiliser TStringList.LoadFromFile
pour charger le fichier, puis vérifiez IndexOf('hello')
- si elle est supérieure à -1
, la chaîne est dans le fichier.
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;
Le code +1 serait encore meilleur si vous utilisiez 'try' ...' finally' – jpfollenius
Ok, puis-je demander s'il serait possible de demander comment supprimer une chaîne tapée dans une boîte d'édition d'un fichier. Donc, vous entrez une chaîne dans une boîte d'édition, puis il recherche le fichier et supprime cette ligne? –
Vous manquez de mémoire si le fichier est vraiment gros (@MattBiggs vous devez d'abord répondre au commentaire de David sur votre question –
- 1. java remplacer chaîne spécifique dans textfile
- 2. Rechercher une valeur spécifique dans une colonne spécifique avec Python
- 3. macro Excel pour rechercher une chaîne spécifique
- 4. Rechercher une chaîne pour un caractère spécifique
- 5. Rechercher une chaîne spécifique dans une autre chaîne
- 6. Windows Cmd Line For Loops
- 7. WebServices for Resaturant Rechercher
- 8. Rechercher une page Web distante pour une chaîne spécifique
- 9. Diviser une chaîne par New Line VB.NET
- 10. Comment rechercher une chaîne spécifique dans une cellule dans Excel?
- 11. Rechercher des fichiers avec une fin spécifique
- 12. WindowsCommand Line> Modifier une chaîne spécifique (contenant un signe égal) à partir d'un fichier texte
- 13. rechercher une chaîne pour un mot spécifique et le remplacer
- 14. Rechercher une chaîne pour un mot spécifique, puis le modifier
- 15. Rechercher toutes les tables pour une sous-chaîne spécifique
- 16. Comment rechercher une chaîne spécifique et renvoyer la ligne entière contenant cette chaîne?
- 17. Comment diviser une chaîne (ADRESSE IP) dans TEXTFILE?
- 18. matlab, textfile
- 19. Pourquoi cette boucle for-line ne s'exécute-t-elle pas?
- 20. URL Rechercher une chaîne avec file_get_contents
- 21. Rechercher une chaîne avec guillemet simple
- 22. Rechercher une chaîne avec des conditions
- 23. Rechercher une chaîne en mémoire
- 24. Rechercher une chaîne vide
- 25. lu avec textfile delimiter en php
- 26. Expression régulière pour rechercher une chaîne indiquant un message d'erreur mais éviter une chaîne spécifique
- 27. rechercher et remplacer un mot spécifique dans la chaîne
- 28. Comment obtenir une chaîne spécifique avec Jsoup
- 29. Comment rechercher une grande chaîne
- 30. Rechercher une chaîne dans une chaîne
Êtes-vous prêt à charger le fichier entier en mémoire, ou avez-vous besoin de le charger en plus petits morceaux? –