Mit Streamreader Text ersetzen



  • Hallo
    Wie kann ich mithilfe des Streamreaders aus einer textdatei zb wo drin steht:
    1 blub 10
    2blub 67
    3 test 89
    usw.

    den text aus einer bestimmten zeile ersetzen bzw wie kann ich nur die nummer ersetzen also bei 1 10 zb durch 12?
    ICh habe die Jeweilige zeile in einen string eingelesen doch wie kann ich in der selben zeile schreiben aus der ich gelesen habe?



  • Thundereye schrieb:

    ICh habe die Jeweilige zeile in einen string eingelesen doch wie kann ich in der selben zeile schreiben aus der ich gelesen habe?

    Gar nicht. Dateien erlauben nunmal in der Regel nur strikt sequentiellen Zugriff. Wenn Du einzelne Zeichen ersetzen willst, dann kannst Du im FileStream an die gewünschte Position springen und das Zeichen ersetzen. Ansonsten gibt's nur: alles einlesen – bearbeiten – zurück in die Datei schreiben.



  • also einfach in ein array einlesen, bearbeiten und das array dann wieder zurückschreiben?



  • Thundereye schrieb:

    also einfach in ein array einlesen, bearbeiten und das array dann wieder zurückschreiben?

    Genau.



  • hallo
    ich wollte den text jetzt bearbeiten angefangen von einer bestimmten position bis zum string ende.
    Dazu hab ich einen String erstellt in dem der inhalt des jeweiligen elements des arrays geladen wird( ich weiss ich hätte gleich das array verwenden können).

    int index = -1;
    index= combobox.selectedindex;
    
    sub= strBearbeiten.Substring(18, strBearbeiten.lenght()); // Der string soll ab Position 18 bis zum ende des Strings in den Substring eingelesen werden
    

    Das Problem ist dass beim kompilieren immer ein fehler ausgegeben wird, weil ihm irgendwas mit strBearbeiten.lenght nich passt. hat wer ne idee?



  • Ne , aber Du könntest die Fehlermeldung posten



  • strBearbeiten.Length() - 18
    

    Der zweite Parameter ist die Länge, die die Position, bis zu der ausgeschnitten werden soll.



  • Knuddlbaer schrieb:

    Ne , aber Du könntest die Fehlermeldung posten

    Geht jetzt leider nicht da ich momentan keinen Zugriff zum Programmierrechner habe.

    @Konrad Rudolph
    Danke werds mal so versuchen



  • Hallo
    Ich habs jetzt so versucht wie Konrad Rudolph es gepostet hat doch da werden dann vom rechten ende des trings 18 zeichen genommen.
    Dann hab ich es so versucht:

    sub = strBearbeiten.Substring(strBearbeiten.Length- strBearbeiten.IndexOf(" "));
    

    Doch das funktioniert komischerweise auch nicht. Beim ersten Eintrag geht es bis zum Leerzeichen so wie es ein soll und ab dem 2ten Eintrag wird der Substring so lang wie er will. Kann mir wer helfen?



  • need Help 🙂



  • Thundereye schrieb:

    Hallo
    Ich habs jetzt so versucht wie Konrad Rudolph es gepostet hat doch da werden dann vom rechten ende des trings 18 zeichen genommen.
    Dann hab ich es so versucht:

    sub = strBearbeiten.Substring(strBearbeiten.Length- strBearbeiten.IndexOf(" "));
    

    Doch das funktioniert komischerweise auch nicht. Beim ersten Eintrag geht es bis zum Leerzeichen so wie es ein soll und ab dem 2ten Eintrag wird der Substring so lang wie er will. Kann mir wer helfen?

    Beschreib doch mal was Du überhaupt mit der Zeile machen willst...



  • Also ich habe eine Textdatei mit mehreren Namen und einem Wert nach jedem Namen.
    zb so:
    Max Muster 100
    Maximillian Mann 250

    In Der TExtdatei soll der Wert verändert werden und dann wieder in die Datei geschrieben werden. Der Wert beginnt immer bei Zeichen 18, kann aber beliebig lang sein. deswegen wollte ich den wert vom Ende der Zeile bis zum esten Leerzeichen in einen Substring einteilen um ihn dann zu bearbeiten. Doch ab dem 2ten Eintrag macht er was er will.



  • Wie wäre es mit XML? Also einem XMLWriter/reader, das ist genauso einfach und dann kansnt du auf die Attribute zugreifen oder eigene Knote für die werte machen. Wenn es nicht um Performanz geht, sollte das einfacher sein.



  • ich hab leider keine ahnung wie XML funktioniert und ich will eigentlich auch nicht einige Monate aufwenden um es zu lernen also scheidet diese möglichkeit aus



  • Monate? So ein Blödsinn! Du solltest Dir vorher erstmal ein Bild von dem machen von dem Du reden willst und nicht einfach so'n Quatsch daherreden!

    XML ist eine Beschreibungssprache im Aufbau ähnlich wie HTML. Das einzige das Du Dir anschauen must ist der Aufbau und der ist einfach. Und die XML Klassen zum schreiben und lesen von XML Dateien sind ebenfalls einfach und vielfältig.

    Lies Dir das hier: http://de.wikipedia.org/wiki/Extensible_Markup_Language durch und Du weisst alles über XML was es zu wissen gibt. Wenn Du ein schlechter Leser bist brauchste dafür vielleicht zwei Stunden.



  • Es bleibt dabei, dass XML hier totaler Overkill ist.

    std::pair<std::string, std::string> read_tuple(std::string const& line)
    {
        std::string::size_type split = line.rfind(' ');
        return std::make_pair(line.substr(0, split), line.substr(split + 1));
    }
    

    /EDIT: ARG … falsches Forum, falsche Sprache. 😞



  • Also, nochmal in seesharp:

    KeyValuePair<string, string> MakeTuple(string line) {
        int split = line.LastIndexOf(' ');
        return new KeyValuePair<string, string>(line.Substring(0, split), line.Substring(split + 1));
    }
    

Anmelden zum Antworten