myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » String-Arrys zusammenfügen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

String-Arrys zusammenfügen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Neokil Neokil ist männlich
myCSharp.de-Mitglied

avatar-2865.jpg


Dabei seit: 20.11.2008
Beiträge: 206
Entwicklungsumgebung: VisualStudio Professional 2012
Herkunft: Schmieheim (Kleines Kaff 50km nördlich von Freiburg)


Neokil ist offline

String-Arrys zusammenfügen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!
Ich bins mal wieder mit einer neuen Frage und zwar bin ich grad dabei ein Synchronisier-Programm zu programmieren und bin auf ein Problem gestoßen und zar möchte ich alle Dateien (Auch die der Unterverzeichnisse) auflisten, also gehe ich mit einer Schleife alle verzeichnisse durch:

C#-Code:
        private string[] DateienZählen(string Verzeichnis)
        {
            string[] Dateien = Directory.GetFiles(Verzeichnis);
            string[] UnterOrdner = Directory.GetDirectories(Verzeichnis);
            foreach (string dir in UnterOrdner)
            {
                Dateien += DateienZählen(dir);
            }
            return Dateien;
        }

Zum Verketten habe ich einfach den + Operator genommen, aber dann habe ich festgestellt, dass man damit keine String-Arrys verketten kann.
Kann mir jemand sagen wie ich die zwei String-Arrys verketten kann oder wie man das ganze einfacher schreiben kann?

MFG
Neokil

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Neokil am 21.04.2009 21:08.

17.04.2009 21:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Hajoseb Hajoseb ist männlich
myCSharp.de-Mitglied

avatar-2670.jpg


Dabei seit: 28.06.2007
Beiträge: 309
Entwicklungsumgebung: VS-Express C# 2015


Hajoseb ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Habe vor ein paar Tagen die Methode

C#-Code:
Strings.Join(string[],String)

als Tipp bekommen.

Der 2.Parameter ist das Trennzeichen zwischen den Strings ...

mfg Hajoseb

P.S. Strings mit >> s << am Ende
17.04.2009 21:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
NeuroCoder NeuroCoder ist männlich
myCSharp.de-Mitglied

Dabei seit: 24.12.2006
Beiträge: 335
Entwicklungsumgebung: Visual Studio 2005
Herkunft: NRW


NeuroCoder ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo TheProg,

benutze eine List<string>. Da du sowieso ein dynamisches Wachstum benötigst, sind Arrays hier nicht das Mittel der Wahl.
Falls du am Ende ein Array benötigst, benutze List.ToArray().

Mfg NeuroCoder
17.04.2009 22:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
jaensen jaensen ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2657.png


Dabei seit: 15.12.2006
Beiträge: 2.760
Entwicklungsumgebung: VS 2013
Herkunft: München


jaensen ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hmm... string.Join(string, string[]) hat zwar eine umgedrehte Signatur aber würde es vermutlich auch tun ohne den VB geraffel.
17.04.2009 23:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tonka
myCSharp.de-Mitglied

avatar-2860.gif


Dabei seit: 05.12.2006
Beiträge: 373
Entwicklungsumgebung: VS 2005/2008/2010
Herkunft: Österrreich


tonka ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich seh das auch wie NeuroCoder => List<String> ist hier die beste Wahl. Als kleinen Tipp noch dazu, überprüfe bei deinem Code, ob das zurückgegebene Array der Funktionen GetFiles/GetDirectories nicht null ist, sonst könnte es einmal krachen wenn du in die foreach gehst!

C#-Code:
private List<String> DateienZählen(string Verzeichnis)
{
     //hier sollten noch Kontrollen staffinden, ob der "Verzeichnis"-String nicht leer ist und ob das Directory existiert!!!
     List<String> erg = new List<String>();
     String[] Dateien = Directory.GetFiles(Verzeichnis);
     if(Dateien != null && Dateien.Length > 0)
     {
           foreach(String Datei in Dateien)
           {
                erg.Add(Datei);
           }
     }
     String[] UnterOrdner = Directory.GetDirectories(Verzeichnis);
     if(UnterOrdner != null && UnterOrdner.Length > 0)
     {
           foreach (string dir in UnterOrdner)
           {
                 List<String> SubDateien = DateienZählen(dir);
                 if(SubDateien != null && SubDatein.Count > 0)
                 {
                          erg.AddRange(SubDateien);//bei der Zeile bin ich mir nicht sicher ob das so geht. hab keinen compiler "zur hand"! sonst musst du dateien einfach wieder per foreach der List adden!
                  }
           }
      }
     return erg;
}

MfG
Tonka
17.04.2009 23:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pdelvo pdelvo ist männlich
myCSharp.de-Mitglied

avatar-3354.png


Dabei seit: 02.11.2008
Beiträge: 1.346
Entwicklungsumgebung: Visual Studio 2012 Prof.


pdelvo ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

vieleicht auch Array.Copy.

Gruß pdelvo
17.04.2009 23:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.464
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo tonka,

Zitat:
C#-Code:
erg.AddRange(SubDateien);//bei der Zeile bin ich mir nicht sicher ob das so geht. hab keinen compiler "zur hand"! sonst musst du dateien einfach wieder per foreach der List adden!

keine Sorge: List<string>.AddRange ist schon genau das Richtige und die eigentliche Lösung für das Ausgangsproblem.


Hallo Hajoseb,

Strings.Join geht hier an der Sache vorbei, weil ja zwei Collections zu einer Collection zusammengefügt werden sollen und die alle Elemente einer Collection zu einem String zusammengefügt werden sollen.


Hallo jaensen,

wenn man ein String-Array also Ausgangscollection hat und zu einem String zusammenfügen will, ist String.Join sicher besser als Strings.Join. Aber weder String.Join noch Strings.Join sind die Antwort auf das Ausgangsproblem.

herbivore
18.04.2009 11:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Jahre.
Der letzte Beitrag ist älter als 10 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 19.02.2020 08:23