• 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#

Fiszki IT
Fiszki IT
0 głosów
84 wizyt
pytanie zadane 18 czerwca w C# przez disaster Obywatel (1,960 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 przez DarthMazut Bywalec (2,870 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 przez disaster Obywatel (1,960 p.)
Z tego co rozumiem...
mam w pliku:

JAN
KOWALSKI

To nie da się usunąć JAN podając usuń jan?
1
komentarz 18 czerwca przez DarthMazut Bywalec (2,870 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 przez Wiciorny Mędrzec (166,950 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 przez reaktywny Nałogowiec (25,440 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 przez areklipno Dyskutant (8,900 p.)
wybrane 22 czerwca 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 przez disaster Obywatel (1,960 p.)

Niestety :/ 

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

Może na plikach nie działa

komentarz 21 czerwca przez areklipno Dyskutant (8,900 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 przez disaster Obywatel (1,960 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 przez areklipno Dyskutant (8,900 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 przez disaster Obywatel (1,960 p.)
Dziękuje :)

Podobne pytania

0 głosów
0 odpowiedzi 47 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez saintx Nowicjusz (120 p.)
+2 głosów
4 odpowiedzi 138 wizyt
pytanie zadane 12 września 2020 w C i C++ przez Dezmonths Początkujący (310 p.)
+1 głos
2 odpowiedzi 189 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

84,751 zapytań

133,554 odpowiedzi

295,976 komentarzy

56,009 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...