C# Ordnernamen in Array?

2 Antworten

Die Arbeit solltest du der Path-Klasse überlassen. Die Select-Methode (aus dem System.Linq-Namespace) durchläuft jeden Pfad und holt sich den String vor dem letzten (Back-)Slash. Das Ergebnis wird in ein iterierbares Objekt geschrieben, welches deiner ItemSource zugewiesen werden kann.

profileausw.ItemSource = Directory.GetDirectories("...").Select(Path.GetFileName);

Gehe die Ordnernamen, welche ja Strings sind, durch und kürze Sie:

ordner = ordner.Split('\').Last();


Janik400 
Fragesteller
 15.09.2021, 00:01

bin ziemlich neu, dann mit while oder wie?

0
Janik400 
Fragesteller
 15.09.2021, 00:04

Ok habe gerade foreach entdeckt habe jetzt das:

string[] profile = Directory.GetDirectories("C:\\Users\\"+username+"\\AppData\\Roaming\\.minecraft\\#modsswitcher");

      foreach (int i in profile)

      {

        profile = profile.Split()

      }

er kennt Split aber nicht

0
DJFlashD  15.09.2021, 00:06
@Janik400

Probiers aus, bis es funktioniert 😁 ich dachte jetzt für mein Beispiel auch an foreach

0
DJFlashD  15.09.2021, 00:07
@Janik400

Er kennt Split nicht, weil du ihm nicht gesagt hast, was er splitten soll, bzw. profiles ist ja ein array und kein string. Split kann man aber nur bei Strings machen

0
Janik400 
Fragesteller
 15.09.2021, 00:08
@DJFlashD

Er sagt mir String hat keine Definition für Split

0
DJFlashD  15.09.2021, 00:11
@Janik400

Hm also eine variable vom Datentyp string schon - aber nicht vom datentyp string[] - was ja ein string array wäre. Also mehrere strings.

0
Janik400 
Fragesteller
 15.09.2021, 00:12
@DJFlashD

string[] profile = Directory.GetDirectories("C:\\Users\\"+username+"\\AppData\\Roaming\\.minecraft\\#modsswitcher");

      foreach (int i in profile)

      {

        profile = profile[i].Split('\').Last();

      }

Habe jetzt das, so kennt er auch Split. Aber jetzt ist for each und das Apostrov vor dem \ rot gekennzeichnet

0
DJFlashD  15.09.2021, 00:24
@Janik400

Naja, lies dir das nochmal durch. Du sagst ja hier: for each (für jedes) integer (int) element, in diesen string array, soll er da was machen. Das kann ja garnicht funktionieren, weil in einem string Array sind keine integer sondern strings.

Versuchs mal so:

string[] profile = ...

string[] ordner = new string[profile.length];

for (int i = 0; i < profile.length; i++){

ordner[i] = profile[i].Split('\').Last();

}

Wenn ich spontan keinen Bug eingebaut hab, liegen danach die Ordnernamen im string array "ordner" und die ganzen pfade weiterhin in "profile"

0
Janik400 
Fragesteller
 15.09.2021, 21:04
@DJFlashD

Also ('\') geht nicht mit Path.DirectorySeparatorChar gehts

1
Palladin007  15.09.2021, 01:54

Und genau das sollte man nicht tun, dafür ist die Path-Klasse da.

0