C# Zeilenkommentar logisch entfernen



  • Hallo Community,

    Ich habe vor einen Kommentarparser zu schreiben.

    Ich habe es bereits geschafft, Multiline-Kommentare zu entfernen.

    Nun habe ich vor einzelne Zeilenkommentare zu entfernen.

    Das Konzept steht bereits, ist aber noch nicht umgesetzt wegen fehlenden Wissen.

    Ein Bild findet man hier: http://www.opentp.org/images/cpp/konzept.jpg

    Wie wäre dieses Konzept mit Quellcode umzusetzen?

    Ratschläge? Lösungen? Tipps?

    Mit freundlichen Grüßen.



  • Was ist mit:

    public static void WriteTree(TextWriter writer)
    {
        writer.WriteLine(@"   //\\"); 
        writer.WriteLine(@"  //  \\");
        writer.WriteLine(@" //    \\");
        writer.WriteLine(@" ---++---");
        writer.WriteLine(@"    ||");
        writer.WriteLine(@" O_P\/__I");
    }
    

    Hier ist "//" in einem String, aber kein Kommentarzeichen.

    Das Regex muss also deutlich komplexer werden.

    Sonst schau dir mal die Regexe von bekannten Javascript C# Code Syntax Highlightern o.ä. (Lizenz ggf. beachten).



  • Hallo,

    warscheinlich habe ich mich etwas undeutlich ausgedrückt.

    Nun, ich habe hier einen Beispielquellcode aus Java\1:

    http://www.opentp.org/images/cpp/js.js

    Unabhängig von dem Inhalt, sollen alle Kommentare in diesem Quellcode entfernt werden. Dabei habe ich mir dieses Konzept aufgestellt (1.Beitrag-Link1).

    Das Problem ist, wie ich dieses umsetzen kann, OHNE die Links in den dort geschriebenen Strings, zu entfernen.

    Mit freundlichen Grüßen.



  • Wie wäre es mit alles was als Kommentar erkannt wird mit einer Regex für links überprüfen, falls diese nicht als link erkannt werden raus löschen.



  • string t_s = "a32;//Dies ist ein Kommentar\nweb.OpenUrl(\"http:\\www.seite.de\");//Auch ein Kommentar\nx=3;//http:\\www.zeugs.de\nstring y = \"So sieht ein Kommentar aus: //Ein Kommentar\";\n";
                Console.WriteLine(t_s);
                Regex reg = new Regex(".*?[^:](//.*)");
                string r = t_s;
                foreach (Match m in reg.Matches(t_s))
                {
                   r = r.Replace(m.Groups[1].Value,"");
                }
                Console.WriteLine(r);
                Console.ReadKey();
    

    Dieser Regex macht was du wolltest und die letzte Zeile des Testtextes zeigt dir das Problem das Rhombicosidodecahedron dir aufzeigen wollte



  • Hallo,

    ich möchte mich für eure freundliche Unterstützung bedanken!

    Ganz besonders "Mr XYZ32".

    Theoretisch gesehen sollte ich deine Schuhe jahrelang plank polieren! 😉

    Vielen vielen Dank! Dein Code habe ich mir angepasst und er funktioniert bestens!!!

    Mit freundlich Grüßen,

    TheDavinciKarl.


Anmelden zum Antworten