• 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 190 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

84,751 zapytań

133,554 odpowiedzi

295,978 komentarzy

56,010 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.

...