Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

deel van een string weergeven in C#

meneer_ed
9 antwoorden
  • Hey,

    Ik heb een dialoogvenster waarmee men een bestand op de computer kan selecteren. Daarna komt er in een textbox het adres van het geselecteerde bestand te staan. Nu wil ik het laatste deel van het adres (de bestandsnaam) in een aparte string zetten. Hoe doe ik dat. Ik wil dus het adres van de bestandsnaam splitsen zodat ik de naam van het bestand krijg.

    Bijvoortbaat dank.
  • ik ken C# niet zo goed, maar google weet raad:

    http://www.smartarrays.com/new/downloads/manual/strings.html

    Ik weet niet of de goede functies voorhanden zijn, maar je moet iig
    de last-occurence van een '' ofzo vinden, en dan de substring nemen van daar tot t eind
  • Wat jij wilt kan met de "split" functie, die splitst een string op basis van een char (of meerdere) en stopt het resultaat in een array.
  • In de meeste talen bestaat een commando INSTR.
    Het is een ingebouwde functie. INSTR(A$,B$) zoekt in A$ tot de stirng B$ gevonden wordt en geeft de positie waar B$ in A$ staat als return.

    Mijn advies:
    Schrijf even je eigen functie (in C#)
    1. Neem de lengte van je path
    2. Zoek van rechts naar links naar het teken \
    3. Het linker deel voor het eerste gevonden \-teken is het lange pad in je functie en het rechterdeel is het deel waar je naar op zoek bent.

    Deze functies zijn al zeer vaak geschreven.
    Windows heeft ze in KERNEL32.DLL staan
    MSDN kernel32, "GetShortPathNameA"

    Als het je niet binnen 15 minuten lukt, geef dan een gil en ik geef deze functie op twee manieren. Maar dit lijkt me voor een C# programmeur geen probleem te zijn.

    Abcott.
  • [quote:3cc32ae740="Klaas Dons"]Nu wil ik het laatste deel van het adres (de bestandsnaam) in een aparte string zetten. [/quote:3cc32ae740]Daar is een kant-en-klare functie voor in C#. Kost wel even zoeken en dat is dan ook wel een nadeeltje van C#/.Net. Volgens mij moet je puzzelen met Path.xxx functies.
  • Het is mij niet duidelijk hoe een eigen functie in C# gemaakt wordt.
    In LB en andere talen wordt een functie gedefinieerd door
    FUNCTION
    END FUNCTION

    Hier volgt een mogelijke oplossing:
    [code:1:ed40022b83] slash = len(fileName$)
    while instr(fileName$, "\", slash)=0
    slash=slash-1
    wend
    Path$=left$(fileName$,slash)
    shortFile$=right$(fileName$,len(fileName$)-slash)
    [/code:1:ed40022b83]

    Deze functie gebruikt ingebouwde functies LEN(, INSTR(, LEFT$( en RIGHT$(

    Abcott
  • [quote:5e3b07a3bf="Klaas Dons"]
    Ik wil dus het adres van de bestandsnaam splitsen zodat ik de naam van het bestand krijg.
    [/quote:5e3b07a3bf]
    Dat doe je zo:
    [code:1:5e3b07a3bf]
    string bestandzonderpad = <volledigestring>.Substring(<volledigestring>.LastIndexOf(@"\")+1);
    [/code:1:5e3b07a3bf]
    Je hoeft dus geen aparte functie te schrijven, of de string van achter naar voor door te lopen. Hou er alleen rekening mee dat een "" een escape-karakter is.
    Met het "@"-teken voor de zoekstring in LastIndexOf geef je aan dat naar het karakter "" moet worden gezocht. Je kan ook een dubbele backslash ("\") gebruiken.
  • [quote:68ce775cc6="abcott"]Het is mij niet duidelijk hoe een eigen functie in C# gemaakt wordt.[/quote:68ce775cc6]Dat gaat "gewoon" in C-syntax.
  • [quote:e08293b5f5="meneer_ed"][quote:e08293b5f5="Klaas Dons"]
    Ik wil dus het adres van de bestandsnaam splitsen zodat ik de naam van het bestand krijg.
    [/quote:e08293b5f5]
    Dat doe je zo:
    [code:1:e08293b5f5]
    string bestandzonderpad = <volledigestring>.Substring(<volledigestring>.LastIndexOf(@"\")+1);
    [/code:1:e08293b5f5]
    [/quote:e08293b5f5]De .Net C# opdracht is dus Path.GetFileName, dat scheelt weer wat gedoe met de backslash.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.