Autor Beitrag
Äfan
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.07.08 18:04 
Hi,

Ich steh momentan auf dem Schlauch. Ich habe folgenden String in einer Datei die ich Zeilenweise auslese:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
File1=D:\bla\blub1.mp3
Title1=bla1 - blub1
Length1=154
File2=D:\bla\blub2.mp3
Title2=bla2 - blub2
Length2=196
...


Ich will jetzt von jedem File-Eintrag die Nummer (also File[1 bis n]) und den Pfad, nur bekomm ich das nicht hin. Mein Ansatz schaut so aus:

ausblenden C#-Quelltext
1:
arrFile.Add(System.Text.RegularExpressions.Regex.Match(strFileLine, @"^File[0-9]*="));					


Ich habe mir einige Tutorials angeschaut aber nichts konnte mir genau helfen.

Kann mir vllt jemand sagen wie der Ausdruck lauten muss das ich eben jeweils die Nummer und den Pfad bekomme !?

PS: Es geht nur um die Zeilen die mit "File" anfangen.

mfg


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 26.07.2008 um 18:18
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 26.07.08 18:15 
Der Ausdruck ist schonmal nicht schlecht. Aber um Gruppen zu bekommen, musst Du die entsprechenden Passagen in Klammern setzen! Außredem musst Du ja noch den Pfad auslesen:
ausblenden Quelltext
1:
^File([0-9]*)=(.*?)$					

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Äfan
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.07.08 18:21 
Danke für den Tipp, leider bekomme ich dann nur im Array die werte:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
{}
{File1=D:\bla\blub1.mp3}
{}
{}
{File2=D:\bla\blub2.mp3}
{}
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 26.07.08 18:30 
Ein Blick in die Doku unter RegEx.Matches löst das Rätsel ...

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Äfan
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.07.08 22:14 
OK habe nachgelesen und es mit MatchCollection und Match in einer foreach-Schleife gemacht. Jetzt bekomme ich aber garnichts mehr zurück. Entferne ich aus deinem Ausdruck das ^ und $, dann bekomme ich das zurück:

ausblenden Quelltext
1:
2:
File1=
File2=


Was mach ich falsch ?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 26.07.08 22:27 
Ich kann Dir nicht helfen, wenn ich Deinen Sourcecode nicht kenne.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Äfan
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 26.07.08 22:42 
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
            StreamReader FileReader;
            string strFileLine;
            string strFileContent = "";
            string strFileContent1 = "";
            ArrayList arrFile = new ArrayList();
            ArrayList arrTitle = new ArrayList();
            ArrayList arrLength = new ArrayList();
            MatchCollection arrFile2 = null;

            FileReader = new StreamReader(File.OpenRead(strFileNameInput));

            while ((strFileLine = FileReader.ReadLine()) != null)
            {
                strFileContent += strFileLine + "\r\n";
            }

            switch (strFileExtInput)
            {
                case (".m3u"):
                    arrFile2 = Regex.Matches(strFileContent, @"^[^#EXT].*?$");
                    break;
                case (".pls"):
                    arrFile2 = Regex.Matches(strFileContent, @"^File([0-9]*)=(.*?)$");

                    break;
            }
               
            FileReader.Close();


            foreach (Match strFile in arrFile2)
            {
                strFileContent1 += strFile.Value.ToString() + "\r\n";
            }

            MessageBox.Show(arrFile2.Count.ToString());
            MessageBox.Show(strFileContent1);
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 27.07.08 11:24 
Du musst den Regex als Multiline-Regex erstellen (schau Dir mal die möglichen Parameter beim Konstruktor an).

Außrdem hat ein Match eine für Dich viel geeignetere Eigenschaft als Value ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Äfan
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 27.07.08 14:58 
Ahhhh jetzt hab ichs... wie du gesagt hast, mit Multiline und Match.Groups hab ichs hinbekommen :)

Besten Dank ;)