• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Usuwanie danego ciągu znaków z pliku .txt C#

VPS Starter Arubacloud
0 głosów
593 wizyt
pytanie zadane 18 czerwca 2021 w C# przez disaster Bywalec (2,120 p.)

Cześć,
Szukam rozwiązania takowego problemu, mam 2 pliki.txt zawartość pierwszego jest zapisana w drugim i chciałbym tą zawartość usunąć (ale tylko tą zawartość)
Szukałem, próbowałem ale nie działa.
Proszę o wskazówki ;)  

String UserName = Environment.UserName;
string maszyna = System.IO.File.ReadAllText(@"C:\Users\" + UserName + "\\maszyna.txt");
string _M = System.IO.File.ReadAllText(@"\\XXXX-006\HU\Parametry\PakoHelper\_M.txt");

  
                int i = _M.IndexOf(maszyna);
                if (i >= 0)
                {
                    _M.Remove(i, maszyna.Length);
                    
                }

 

1
komentarz 18 czerwca 2021 przez DarthMazut Bywalec (2,990 p.)

Proszę czytać dokumentację:

https://docs.microsoft.com/en-us/dotnet/api/system.string.remove?view=net-5.0

Returns a new string in which a specified number of characters from the current string are deleted.

W którym miejscu przechwytujesz zwracany string?

edit: stringi w C# są immutable, nie ma modyfikowania stringów, zawsze jest zwracany nowy czy to jawnie czy niejawnie.

komentarz 18 czerwca 2021 przez disaster Bywalec (2,120 p.)
Z tego co rozumiem...
mam w pliku:

JAN
KOWALSKI

To nie da się usunąć JAN podając usuń jan?
1
komentarz 18 czerwca 2021 przez DarthMazut Bywalec (2,990 p.)

da się, ale dostaniesz nowy string. Istniejącego nie zmodyfikujesz.

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/

String objects are immutable: they cannot be changed after they have been created.

1
komentarz 18 czerwca 2021 przez Wiciorny Ekspert (269,120 p.)

@disaster,ale można to traktować jako strumień bajtów z zawartości pliku i w ten sposób jest to mutable, i znacznie prościej jest zrobić trim ;] 

https://docs.microsoft.com/pl-pl/dotnet/api/system.string.replace?view=net-5.0 - co prawda jest to dalej to co kolega napisał nowy ciąg

 

 

W języku C# ciągi są niezmienne. Oznacza to, że metoda nie usuwa znaków z ciągu. Metoda tworzy i zwraca nowy ciąg bez tych znaków.

jak wyżej kolega napisał  

komentarz 1 lipca 2021 przez reaktywny Nałogowiec (40,650 p.)
Trim usuwa niechciane znaki z początku / końca, lepsze byłoby Replace - zastępując niechciane informacje pustym stringiem.

1 odpowiedź

+1 głos
odpowiedź 18 czerwca 2021 przez areklipno Stary wyjadacz (11,930 p.)
wybrane 22 czerwca 2021 przez disaster
 
Najlepsza

wg mnie wystarczy użyć Replace:

string tekst = "Ola ma kota";
tekst = tekst.Replace("Ola", "Ala");
Console.WriteLine(tekst);
//wynik: Ala ma kota

 

komentarz 21 czerwca 2021 przez disaster Bywalec (2,120 p.)

Niestety :/ 

_M = _M.Replace(maszyna,"");

Może na plikach nie działa

komentarz 21 czerwca 2021 przez areklipno Stary wyjadacz (11,930 p.)
Działa tylko musisz to "nowe" M wpisać do pliku (nadpisać to co było w pliku). Inaczej podmiana następuje tylko w zmiennej, a nie w pliku..
komentarz 22 czerwca 2021 przez disaster Bywalec (2,120 p.)

Ok, tylko teraz mi dopisuje do pliku a nie podmienia wartość. 
 

                _M = _M.Replace(maszyna, "5");

                    sw = new StreamWriter(path, true, System.Text.Encoding.Default);
                    sw.WriteLine(_M);
                    sw.Close();

 

komentarz 22 czerwca 2021 przez areklipno Stary wyjadacz (11,930 p.)

Używasz tego konstruktora:

StreamWriter (string path, bool append, System.Text.Encoding encoding);

zatem masz dajesz true na "apend" - innymi słowy mówisz, żeby streamwritter dopisywał do pliku. Jeśli wstawisz tam false powinno nadpisać plik.

komentarz 22 czerwca 2021 przez disaster Bywalec (2,120 p.)
Dziękuje :)

Podobne pytania

0 głosów
0 odpowiedzi 271 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez saintx Nowicjusz (120 p.)
+2 głosów
4 odpowiedzi 552 wizyt
pytanie zadane 12 września 2020 w C i C++ przez Dezmonths Początkujący (310 p.)
+1 głos
2 odpowiedzi 620 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...