Trim Problem



  • Guten Tag,
    ich habe ein Problem mit der Trim Methode von String.
    Das Problem besteht darin, dass ich ein Textdokument hab, welches folgenderweiße strukturiert ist:

    29:    int zahl;
    194:        if(zahl == 23)
    8242:    zahl = 5;
    

    Nun müsste ich mit einem Programm die Zahlen + den : entfernen, dass aus

    29:    int zahl;
    
    int zahl;
    

    wird.

    Also habe ich mich erkundigt und bin auf TrimStart gestoßen, aber ich komme damit nicht ganz zu recht. Auf MSDN habe ich diesen Code gefunden

    public static string[] StripComments(string[] lines)
            {
                List<string> lineList = new List<string>();
                foreach (string line in lines)
                {
                    if (line.TrimStart(' ').StartsWith("//"))
                        lineList.Add(line.TrimStart(' ', '/'));
                }
                return lineList.ToArray();
            }
            public static void Main()
            {
                string[] lines = {"using System;",
                        "", 
                        "public class HelloWorld",
                        "{", 
                        "   public static void Main()",
                        "   {", 
                        "      // This code displays a simple greeting", 
                        "      // to the console.", 
                        "      Console.WriteLine(\"Hello, World.\");", 
                        "   }", 
                        "}"};
                Console.WriteLine("Before call to StripComments:");
                foreach (string line in lines)
                    Console.WriteLine("{0}", line);
    
                string[] strippedLines = StripComments(lines);
                Console.WriteLine("After call to StripComments:");
                foreach (string line in strippedLines)
                    Console.WriteLine("{0}", line);
                Console.ReadKey();
            }
    

    Wie müsste ich oben die Methode mit dem Trim verändern, dass wie gewünscht die Zahlen am Anfang + den Doppelpunkt dahinter zu löschen? Oder gibt es eine bessere Lösung?
    Ich wäre über Hilfe sehr erfreut.

    Mit freundlichen Grüßen : FreakY



  • die Trim* methoden nehmen glaub ich auch ein array of char an

    dh mach einfach sowas wie:

    line = line.TrimStart(new char[] { ':', ' ' });
    

    dann waerst du schonmal das : und die leerzeichen los (tab fehlt aber)
    das problem sind dann nur die zahlen - wenn du die da mit auffuehren wurdest und haettest ne zahl am anfang des zu resultierenden strings waere die auch weg
    ein

    8242:    2zahl = 5;
    

    wuerde zu

    zahl = 5;
    

    anstatt

    2zahl = 5;
    

    weiss ja nicht ob das ein problem ist, wenn egal erweiter einfach das array um alle zahlen #gg

    var numbers = new List<char>();
    for (i = 1; i <= 9; ++i)
        numbers.Add(char.Parse(i));
    numbers.Add(':')
    numbers.Add(' ');
    line = line.TrimStart(numbers.ToArray());
    

    ich persoenlich wuerde wenn dann alles killen bis zum ersten vorkommen des :

    int pos = line.IndexOf(':');
    line = line.SubString(pos, line.Length - pos);
    line = line.TrimStart(new char[] { ':', ' ' });
    

    (ist nur pseudo code)



  • Gibts vielleicht eine bessere Lösung?



  • woran dachtest du ?
    mein pseudocode (comment am ende) sind doch nur 3 zeilen



  • FreakY<3Cpp schrieb:

    Oder gibt es eine bessere Lösung?

    Am einfachsten geht das über Regexe:

    //Psydocode
    using System.Text.RegularExpressions;
    
    /* ... */
    
    Regex cleanCode = new Regex(@"\d+\:");
    return cleanCode.Replace(line, "");
    


  • Mr Evil schrieb:

    woran dachtest du ?
    mein pseudocode (comment am ende) sind doch nur 3 zeilen

    Ah tut mir Leid, der Code funktioniert, hatte nur vergessen eine Ausgabe zu machen 🙄



  • achso du hattest nur nach einer besseren loesung gefragt weil es nicht funktionierte ? interessant #gg

    interessant duerfte auch der regex ansatz sein


Log in to reply