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
ein8242: 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 zeilenAh 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