Zasadniczo mam plik tekstowy, który czytam i wyświetlam w polu tekstowym, co jest w porządku, ale chcę mieć możliwość przeszukaj tekst pod kątem określonego słowa i usuń cały wiersz tekstu, który zawiera to słowo. Mogę przeszukiwać tekst, aby zobaczyć, czy słowo istnieje, czy nie, ale nie mogę wymyślić, jak usunąć całą linię. Każda pomoc byłaby świetna.C# plik tekstowy wyszukaj konkretne słowo i usuń cały wiersz tekstu, który zawiera to słowo
Odpowiedz
Najłatwiej jest przepisać cały plik bez wiersza (-y) zawierającego słowo. Można użyć LINQ
za to:
var oldLines = System.IO.File.ReadAllLines(path);
var newLines = oldLines.Where(line => !line.Contains(wordToDelete));
System.IO.File.WriteAllLines(path, newLines);
Jeśli chcesz tylko usunąć wszystkie wiersze zawierające słowo (nie tylko ciąg znaków), trzeba podzielić linię przez ' '
:
var newLines = oldLines.Select(line => new {
Line = line,
Words = line.Split(' ')
})
.Where(lineInfo => !lineInfo.Words.Contains(wordToDelete))
.Select(lineInfo => lineInfo.Line);
można to łatwo zrobić bez LINK
string search_text = text;
string old;
string n="";
StreamReader sr = File.OpenText(FileName);
while ((old = sr.ReadLine()) != null)
{
if (!old.Contains(search_text))
{
n += old+Environment.NewLine;
}
}
sr.Close();
File.WriteAllText(FileName, n);
@mMd Kamruzzaman Pallob jak mogę zrobić dla wielu słów ... to działało idealnie dla mnie .. Ale na jedno słowo .. Muszę poszukać jeszcze trzech słów .. Jak mogę to zrobić ... Dzięki –
Kod:
"przy użyciu System.Linq;" jest wymagane.
napisać własną metodę rozszerzenia IsNotAnyOf(,)
(umieścić go w klasie statycznej) i wywołać metodę (czyli to nazywa) z .Where(n => n.IsNotAnyOf(...))...();
pętli for zwróci false, jeśli warunek jest spełniony, jeżeli nie metoda zwróci true:
static void aMethod()
{
string[] wordsToDelete = { "aa", "bb" };
string[] Lines = System.IO.File.ReadAllLines(TextFilePath)
.Where(n => n.IsNotAnyOf(wordsToDelete)).ToArray();
IO.File.WriteAllLines(TextFilePath, Lines);
}
static private bool IsNotAnyOf(this string n, string[] wordsToDelete)
{ for (int ct = 0; ct < wordsToDelete.Length; ct++)
if (n == wordsToDelete[ct]) return false;
return true;
}
- 1. C# wyszukaj plik tekstowy, zwróć wszystkie wiersze zawierające słowo
- 2. Wyszukaj konkretne słowo w formacie PDF za pomocą Itextsharp
- 3. Linux: Wyszukaj konkretne słowo na liście plików w katalogu
- 4. Usuń cały wiersz, jeśli komórka zawiera ciąg X
- 5. Wyszukaj plik tekstowy i wydrukuj powiązane wiersze w języku Python?
- 6. Usuń pierwsze słowo w strumieniu tekstu
- 7. Wyszukaj słowo w ciągu znaków
- 8. podświetlić słowo w łańcuchu, jeśli zawiera ono słowo kluczowe
- 9. Aby sprawdzić, czy ciąg zawiera określone słowo
- 10. liczyć konkretne słowo w wierszu bash
- 11. Sznurkiem słowo zawijać lub wyświetlić cały tekst
- 12. Jak znaleźć funkcje w pliku cpp, które zawierają konkretne słowo
- 13. Go „to” -słowo kluczowe
- 14. użycie "to" słowo kluczowe w C++
- 15. R usuń ostatnie słowo ze stringa
- 16. Szyny Aktywne wyszukiwanie rekordów - Nazwa zawiera słowo
- 17. Odczytaj plik tekstowy w Perlu słowo po słowie zamiast linii po linii
- 18. Sprawdź, czy ciąg zawiera słowo w tablicy
- 19. Ostatnie słowo wyświetlane w wyglądzie tekstowym
- 20. Usuń cały wiersz tabeli przycisk angularjs
- 21. budować listę współwystępującą słowo słowo w R
- 22. Usuń pierwsze słowo z każdej linii
- 23. Usuń linie zawierające słowo kluczowe z pliku
- 24. Matching to samo słowo dwukrotnie wyrażenie regularne, nie dbając o to, co to słowo jest
- 25. C# params słowo kluczowe i funkcja przeciążenia
- 26. dokument powielania Słowo użyciu OpenXML i C#
- 27. C# flagi wyliczenia wielkości słowo
- 28. Jak wyświetlać konkretne słowo pogrubione za pomocą jquery?
- 29. Śledź, czy użytkownik wpisał konkretne "słowo" na WinForm
- 30. Słowo kluczowe "ref" i AppDomains
Ach tak, to ma sens, użyłem tego w moim kodzie i zadziałało :) Dziękuję bardzo !! – user1364063