[Code] Zahl ersetzen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Murphyy, 9. November 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. November 2008
    Zahl ersetzen

    So, hätte da eine Frage:

    Ich möchte mit einem Programm eine .txt Datei öffnen, eine Zahl (zb 12345) durch eine andere, eingegebene, ersetzen und sie nachher als .html speichern und öffnen.
    Ich glaube das beste Format dafür wäre C(#/++) oder Batch. Mir fehlen allerdings für beides die nötigen Funktionsbegriffe (öffnen, ersetzen, speichern usw)

    Wie kann ich das realisieren?
    Wäre gut wenn das jemand genauer erläutern könnte anstatt einfach eine Lösung zu posten.

    BW ist natürlich drin
     
  2. 9. November 2008
    AW: Zahl ersetzen

    Batch wäre sicher praktikabler, aber da ich das nicht kann, probier ich es mal für C#:

    Code:
    StreamReader sr = new StreamReader("datei.txt");
    String txt = sr.ReadToEnd();
    txt = txt.Replace("123456", textBox1.Text);
    StreamWriter sw = new StreamWriter("test.html");
    sw.Write(txt);
    sw.Close();
    sr.Close();
    
     
  3. 9. November 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Zahl ersetzen

    Hier in C++ (is bissl ausführlicher geworden, dafür plattformunabhängig )

    Code:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <algorithm>
    
    int main()
    {
     std::string textFile;
     std::string htmlFile;
     std::string number;
     std::string number2;
     
     std::cout << "Dateiname: ";
     std::cin >> textFile;
     
     htmlFile = textFile.substr(0, textFile.rfind('.')) + ".html";
     
     std::cout << "Zahl zu suchen: ";
     std::cin >> number;
     
     std::cout << "Zahl zu ersetzen: ";
     std::cin >> number2;
     
     std::cout << "[+] Lese Datei " << textFile << "..." << std::endl;
     std::ifstream file(textFile.c_str());
     if (file.is_open())
     {
     std::string content;
     std::string line;
     while (!file.eof())
     {
     std::getline(file, line);
     content += line + "\n";
     }
     file.close();
     
     std::cout << "[+] Suche nach String-Position..." << std::endl;
     std::size_t pos = content.find(number);
     if (pos != std::string::npos)
     {
     std::cout << "[+] Ersetze \"" << number << "\" mit \"" << number2 << "\"..." << std::endl;
     content.replace(pos, number.length(), number2);
     
     std::ofstream html(htmlFile.c_str());
     html << content;
     html.close();
     
     std::cout << "[+] " << htmlFile << " wurde erstellt" << std::endl;
     }
     else
     {
     std::cerr << "[-] Fehler: " << number << " existiert nicht in " << textFile << std::endl;
     }
     }
     else
     {
     std::cerr << "[-] Fehler, konnte Datei " << textFile << " nicht öffnen" << std::endl;
     }
     
    }
    
    Compiled: No File | xup.in
     
  4. 9. November 2008
    AW: Zahl ersetzen

    Danke pyro, das hätte ich so niemals hinbekommen

    hab noch 2 Sachen verändert, weil die Varibable textFile und number immer gleich sind
    könntest du vllt noch einbauen, dass die html Datei geöffnet wird? Der Name von dieser wird immer gleich sein, würde ich dann selbst in den Code schreiben
     
  5. 9. November 2008
    AW: Zahl ersetzen

    Ich versteh deine Frage nich..

    wenn textFile und number immer gleich sind, dann lösch halt die entsprechenden Zeilen mit cin und setz den Wert fest:
    Code:
    textFile = "bla.txt";
    number = "1234"; //ist ein string, kein int
    bei der html-datei isses dasselbe, atm wird der dateiname von der textDatei verwendet, aber du kannst natürlich auch sagen:
    Code:
     // htmlFile = textFile.substr(0, textFile.rfind('.')) + ".html";
     htmlFile = "blabla.html"
    
     
  6. 9. November 2008
    AW: Zahl ersetzen

    Okay, ich glaube du hast mich falsch verstanden
    habe ich schon gemacht:
    das hatte ich damit gemeint

    Ich möchte nur noch im Programm haben, dass die erstellte html Datei automatisch geöffnet wird, sonst war alles perfekt
     
  7. 9. November 2008
    AW: Zahl ersetzen

    Nach
    Code:
     std::cout << "[+] " << htmlFile << " wurde erstellt" << std::endl;
    das einfügen:
    Code:
     std::string cmd = "\"C:\\Programme\\Mozilla Firefox\\firefox.exe\" " + htmlFile;
     system(cmd.c_str());
    pfad halt entsprechend anpassen

    Is natürlich keine besonders schöne lösung und die plattformunabhängigkeit geht auch flöten
     
  8. 9. November 2008
    AW: Zahl ersetzen

    Hab gerade die erstellte HTML Datei nochmal "untersucht"

    Die Zahl 12345 müsste 6 mal ersetzt werden durch die Eingegebene, wird sie aber nur 1 Mal
    Wäre das noch irgendwie möglich?

    Danach wären alle meine Wünsche erfüllt, ich hoffe ich mache nicht zu viele Umstände

    //man könnte auch wenn möglich programmieren, dass jede Zahl die 12345 ist ersetzt wird, kommt aufs selbe raus, ist aber evtl leichter umzusetzen...
     
  9. 10. November 2008
    AW: Zahl ersetzen

    Code:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <algorithm>
    
    int main()
    {
     std::string textFile;
     std::string htmlFile;
     std::string number;
     std::string number2;
     
     std::cout << "Dateiname: ";
     std::cin >> textFile;
     
     htmlFile = textFile.substr(0, textFile.rfind('.')) + ".html";
     
     std::cout << "Zahl zu suchen: ";
     std::cin >> number;
     
     std::cout << "Zahl zu ersetzen: ";
     std::cin >> number2;
     
     std::cout << "[+] Lese Datei " << textFile << "..." << std::endl;
     std::ifstream file(textFile.c_str());
     if (file.is_open())
     {
     std::string content;
     std::string line;
     while (!file.eof())
     {
     std::getline(file, line);
     content += line + "\n";
     }
     file.close();
     
     
     std::cout << "[+] Suche nach String-Position..." << std::endl;
     std::size_t pos = content.find(number);
     while (pos != std::string::npos)
     {
     std::cout << "[+] Ersetze \"" << number << "\" mit \"" << number2 << "\"..." << std::endl;
     content.replace(pos, number.length(), number2);
     
     pos = content.find(number);
     }
     
     std::ofstream html(htmlFile.c_str());
     html << content;
     html.close();
     
     std::cout << "[+] " << htmlFile << " wurde erstellt" << std::endl;
     
     std::string cmd = "\"C:\\Programme\\Mozilla Firefox\\firefox.exe\" " + htmlFile;
     system(cmd.c_str());
     }
     else
     {
     std::cerr << "[-] Fehler, konnte Datei " << textFile << " nicht öffnen" << std::endl;
     }
     
    }
    
    Das was du vorher angepasst hast, musst du halt wieder reineditieren.
     
  10. 10. November 2008
    AW: Zahl ersetzen

    Super, funktioniert so, wie ich das haben wollte
    Kriegst auf jeden Fall paar BWs & so für deine Mühe!

    -close-
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.