none
c++ htm automatisieren RRS feed

  • Frage

  • Hallo,

    ich habe ein Problem bezüglich der Textverarbeitung in c++.

    Ich muss ein Programm erstellen, welches mir bestimmte HTML-Code-Passagen aus einer Datei löscht, an diese Stelle einen static code schreibt und die Datei schließt. Die Stelle, an der dies geschieht, sollte an einem ersten Wort für das Programm zu erkennen sein, oder als Notbehelf an einer Zeilennummer. Schön und gut - aber alles was ich mache schlägt fehl:

    wenn ich ofstream mit ios_base::out benutze, löscht er die ganze Datei - ich weiß, wie ich das behebe, aber andernfalls ersetzt er mir die Datei nur durch den Text.

    ich habe viele sachen zur Verfügung: out, app, trunc, in, ate, end, beg......aber wie sage ich dem Programm eine variable positition im Text?? Alles führt nur dazu, am Anfang oder Ende zu schreiben oder die Datei zu löschen/zu ersetzen.

    wenn ich versuche, die datei in einen string zu lesen, da zu bearbeiten und anschließend wieder zu schreiben, bekomme ich -wahrscheinlich aufgrund mangelnder kenntnisse-immer die meldung, dass der parameter 1 von std::string nicht in system::string gewandelt werden konnte usw. (viell hat jemand ein Beispiel?)

    die konvertierung von std::string in system::string schlägt mit o.g. Meldung ebenfalls fehl.

     

    Kann jemand helfen?

    was mir weiterhelfen würde: Ein Codebeispiel, wie ich AB einer bestimmten Zeile BIS ZUM ENDE Text lösche.

    Ich benötige das Programm dringend, um jemandem bei einer Webseitenerstellung das Leben einfacher zu machen.....

     

    Grüße

    Sonntag, 9. Mai 2010 01:52

Antworten

  • Hallo vb.net-tier!

    Ich muss ein Programm erstellen, welches mir bestimmte HTML-Code-Passagen aus einer Datei löscht, an diese Stelle einen static code schreibt und die Datei schließt.


    Ich empfehle Dir hierfür C# oder VB-NET mit RegEx zu verwenden...
    Und so kannst Du dann z.B. "img Tags entfernen...       

    Regex stripImg = new Regex("</?(?i:img)(.|\\n|\\r\\n)*src\\=\"(.|\\n|\\r\\n)*?>", 
      RegexOptions.CultureInvariant | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);
    stripImg.Replace(html, string.Empty);

    Greetings
      Jochen

    Jochen Kalmbach (MVP VC++)
    Sonntag, 9. Mai 2010 08:44

Alle Antworten

  • Hallo vb.net-tier!

    Ich muss ein Programm erstellen, welches mir bestimmte HTML-Code-Passagen aus einer Datei löscht, an diese Stelle einen static code schreibt und die Datei schließt.


    Ich empfehle Dir hierfür C# oder VB-NET mit RegEx zu verwenden...
    Und so kannst Du dann z.B. "img Tags entfernen...       

    Regex stripImg = new Regex("</?(?i:img)(.|\\n|\\r\\n)*src\\=\"(.|\\n|\\r\\n)*?>", 
      RegexOptions.CultureInvariant | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);
    stripImg.Replace(html, string.Empty);

    Greetings
      Jochen

    Jochen Kalmbach (MVP VC++)
    Sonntag, 9. Mai 2010 08:44
  • Hallo,

    Regex klingt gut, aber wie genau muss ich das angehen? Zuerst die datei in eine Stringvariable lesen, dann mit regex bearbeiten und wieder schreiben?

    Kannst du mir regex etwas genauer erklären?

    Das oben ist C#-code und ich bin mehr die VB-c++ spur.....also welche Parameter man genau wo übergibt und so...

     

     

    Grüße

     

    Vb.net-Tier

     

    Sonntag, 9. Mai 2010 22:19
  • Das oben ist C#-code und ich bin mehr die VB-c++ spur.....also welche Parameter man genau wo übergibt und so...

    Da Du bereits C++/CLI (also .NET) verwendest, solltes Du für diese Aufgabe, wie von Jochen  bereits geschrieben, lieber C# verwenden. Wenn Du allerdings VB.NET verwenden möchtest, kannst Du ja nochmal im VB.NET Forum nachfragen.

    Ein Link zum lernen von Regex ist z.B

    http://www.radsoftware.com.au/regexdesigner/

    Gruss

    Lars

     

    Montag, 10. Mai 2010 08:14
  • Hallo,

    ich habe mit regex nun meine html-Quelltext-Suche formuliert. Nur leider unterscheidet regex hier nicht mit Groß-und Kleinschreibung...

     

    (<?(?i:center>)(?i:.+)<a\s(?i:href)(?i:.+)</center>)

     

    ich habe eine Zeile weiter oben ein "CENTER" und danach ein "center". Das Großgeschreibene soll nicht erfasst werden, wird es aber doch!

    Hat jemand eine Idee zur Groß-Kleinschreibung? Ich habe gelesen es wird normalerweise unterschieden!

    P.S. Das Tool oben ist Spitze zum Regex-Testen!! :-)

     

     Grüße

     

    Vb.net-Tier

     

    Montag, 10. Mai 2010 16:03
  • ich habe mit regex nun meine html-Quelltext-Suche formuliert. Nur leider unterscheidet regex hier nicht mit Groß-und Kleinschreibung...

    (<?(?i:center>)(?i:.+)<a\s(?i:href)(?i:.+)</center>)

    Wenn Du das RAD-Tool verwendest, ist auf der rechten Seite eine Hilfe für die Elemente.

    IgnoreCase Off = (?-i:)

    Gruss

    Lars

     

    Montag, 10. Mai 2010 17:15
  • Hallo!

    Ich habe nun einen Vb.Net Code-Schnipsel ins Vb-Forum gestellt...Vielen Dank euch, ihr habt mir mit dem Regex-Tipp und dem Programm sehr geholfen!!

     

     

    Grüße

     

    Vb-Net-Tier

    Dienstag, 11. Mai 2010 22:37