Avatar billede bootie Nybegynder
11. juni 2005 - 14:39 Der er 17 kommentarer og
1 løsning

Returnere sidste ord i en path

Hej xperten

Jeg skal lige bruge en linie der returnere sidste ord i en path.

FX C:\Drivers\Audio så skal jeg sidde med Audio
FX C:\Drivers\Net så skal jeg sidde med Net
Avatar billede arne_v Ekspert
11. juni 2005 - 14:43 #1
string[] pathparts = path.Split("\\".ToCharArray());
string last = pathparts[pathparts.Length - 1];

måske
Avatar billede nielle Nybegynder
11. juni 2005 - 14:45 #2
Godt nok lig af et misbrug af GetFileName():

string dinPath = @"C:\Drivers\Audio";
string lastDir = Path.GetFileName(dinPath);
Avatar billede bootie Nybegynder
11. juni 2005 - 14:48 #3
Jeg er en gammel Java mand.
Er der ikke en måde at finde placeringeren af den sidste \ og så med noget substring tage det sidste af variablen?
Avatar billede bootie Nybegynder
11. juni 2005 - 14:48 #4
Pathen er iøvrigt variable. Jeg kan ikke være sikker på den ligger i C:\Drivers
Avatar billede nielle Nybegynder
11. juni 2005 - 14:52 #5
string dinPath = @"C:\Drivers\Audio";
int lastPos = dinPath.LastIndexOf(@"\");
string lastDir = dinPath.Substring(lastPos+1);
Avatar billede bootie Nybegynder
11. juni 2005 - 14:54 #6
Ny i C#
Hvad skal den der @ lige pludselig gøre godt for?
Avatar billede nielle Nybegynder
11. juni 2005 - 14:54 #7
> Pathen er iøvrigt variable. Jeg kan ikke være sikker på den ligger i C:\Drivers

Det er da ikke noget problem. Du har bare værdien i dinPath - eller hvad du nu vil kalde den.
Avatar billede nielle Nybegynder
11. juni 2005 - 14:55 #8
@ betdyer at man ikke er nødt til at escape sine \-tegn:

@"C:\Drivers\Audio";
"C:\\Drivers\\Audio";

- er det samme.
Avatar billede bootie Nybegynder
11. juni 2005 - 15:03 #9
Oh.. det er da ret smart og rart når man har med paths at gøre.

Løsningen blev:
private string returnLastWord(string word)
{
    string dinPath = @word;
    int lastPos = dinPath.LastIndexOf(@"\");
    string lastDir = dinPath.Substring(lastPos+1);
    return lastDir.ToUpper();
}
Avatar billede nielle Nybegynder
11. juni 2005 - 15:10 #10
Den "løsning" fungere desværre ikke. @-notationen bruges kun sammen med at man angiver en streng-kosntant. Derimod vil

string dinPath = @word;

- slet ikke kompilere.
Avatar billede nielle Nybegynder
11. juni 2005 - 15:12 #11
private string returnLastWord(string dinPath)
{
    int lastPos = dinPath.LastIndexOf(@"\");
    string lastDir = dinPath.Substring(lastPos+1);
    return lastDir.ToUpper();
}
Avatar billede bootie Nybegynder
11. juni 2005 - 15:18 #12
Det er meget mulig at den ikke vil kompilere på din kompiler, men det vil den altså på min... no shit
Avatar billede bootie Nybegynder
11. juni 2005 - 15:19 #13
Men helt klart. Jeg spare en linien med din metode.
Avatar billede nielle Nybegynder
11. juni 2005 - 15:24 #14
Svar :^)

private string returnLastWord(string dinPath)
{
    int lastPos = dinPath.LastIndexOf(@"\");
    return lastDir = dinPath.Substring(lastPos+1).ToUpper();
}
Avatar billede bootie Nybegynder
11. juni 2005 - 15:33 #15
Ja eller 2 linien.
Avatar billede nielle Nybegynder
11. juni 2005 - 15:40 #16
Nu er det vel ikke et mål i side selv at det skal foregå over så få linjer som muligt. Til sidst er det bare ulæseligt ;^)

private string returnLastWord(string dinPath)
{
    return dinPath.Substring(dinPath.LastIndexOf(@"\")+1).ToUpper();
}
Avatar billede bootie Nybegynder
11. juni 2005 - 15:58 #17
Optimering
Avatar billede nielle Nybegynder
24. juni 2005 - 17:56 #18
Det bliver ikke hurtigere fordi at det er på en linje. Compileren skal nok selv sørge for at optimere så meget som overhovedet muligt.

Og, man kan jo faktisk også vælge at optimere for vedligeholdelses vlenlighed
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester