1. #1
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)

    [PROG][C#] charset probleem '\'

    Met een programma laad ik url's in uit een CSV-bestand
    de cellen worden ingelezen via File.readAllLines(String path) uit System.IO
    bvb in het CSV-bestand staat een cel: "\img\kunst\buitenland\2007" => "\\img\\kunst\\buitenland\\2007"
    Dus alle '\'-tekens worden verdubbeld.
    Het gevolg is nu dat ik die url niet kan gebruiken als path voor bvb methodes als Directory.GetDirectories(String path);

    Nu zou ik dus graag die dubbele \'s eruit filteren, weet iemand hoe dit kan?
    Ik heb al via substring geprobeerd, en via split.
    Via substring krijg ik de positie niet vast: if (stringske[i][j] == '\\') { ... }
    En via split krijg ik geen enkele "\" (altijd weer dubbele chars) in de string. (splitsen van de string naar een array gebeurt met de char-array {'\\'})


    vrij irritant probleem


    en dan nog een klein vraagje,
    welke klasse heb ik nodig om bestanden te kopieren van een password-protected https-locatie?
    no votes  

  2. #2
    H@voc_!nc.'s Avatar
    Registered
    17/07/02
    Location
    Sint-Jans-Molenbeek
    Posts
    447
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Regex.Unescape
    no votes  

  3. #3
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    thx, daarmee zal het wel lukken

    :edit:
    of toch net niet
    Code:
    String test = "\\img\\kunst\\galerij";
    String unescapedTest = Regex.Unescape(test);
    => ArgumentExeption was unhandled: parsing "\img\kunst\galerij", unrecognized escape sequence \i
    Last edited by SMa; 17-09-2007 at 14:17.
    no votes  

  4. #4

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    ehm

    replace("\\\\","\\"); ???

    (pseudocode)
    no votes  

  5. #5
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    nee, dan staat het nog steeds dubbel in de string

    maar ik denk dat ik nu wel een vrij goede oplossing heb
    '\\' replacen door '/' =>
    no votes  

  6. #6

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    vrij bizar probleem hoor, ma kherinner me dat dit nogal meer voorvalt als windows-functies pathnames evalueren (escape-chars negeren). Wel dwaas. Weet er niet direct een oplossing voor echter.
    no votes  

  7. #7
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    als iemand de oorzaak/oplossing kent -> nog steeds welkom
    ik heb ondertussen al heel wat omwegen moeten uitvinden



    ik heb ook nog een andere vraag, ivm access-modifiers
    Code:
    public bool autoLoad
    {
    	get { return autoLoad; }
    	set { }
    }
    hoe schrijf ik nu best die set? het is de eerste keer dat ik zox toepas, en ik vind geen voorbeelden op internet maar weet wel dat het mogelijk is (ooit eens gelezen in een boek)
    de bedoeling is dat de boolean zich set volgens de input, en dat de boolean ondertussen ook als string weggeschreven wordt

    een klein voorbeeldje zou me al ver op weg helpen
    Last edited by SMa; 18-09-2007 at 19:43.
    no votes  

  8. #8

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    uw accessor een andere naam als uw variabele geven ... . En voor de rest is die set gewoon een alledaagse methode (zonder return) met als argument een boolean.
    no votes  

  9. #9
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Er is een keyword "value". Meestal doet men zoiets:
    Code:
    private bool autoLoad; // beginnen met kleine letter
    
    public bool AutoLoad // Grote letter
    {
      get { return autoLoad; }
      set { autoLoad = value; }
    }
    
    AutoLoad = true;
    no votes  

  10. #10

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    ok, ja, da keyword was ook vrij essentieel om te vermelden
    no votes  

  11. #11
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    big thanks
    no votes  

  12. #12
    xytro's Avatar
    Registered
    17/09/03
    Location
    Loppem
    Posts
    1,014
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/1
    Nie de beste manier, ma werkt wel voor uw doel :
    Code:
    		string RemoveDoubleBackslash(string strText)
    		{
    			string strRetVal = "";
    			string[] strTekstArray = strText.Split('\\');
    			
    			for(int i = 0; i < strTekstArray.Length; i++)
    			{
    
    				//				MessageBox.Show(strTekstArray[i]);
    				if(strTekstArray[i].Length > 0)
    				{
    					strRetVal += "\\" + strTekstArray[i];
    				}
    			}
    			return strRetVal;
    		}
    "Our car didn’t make the hill and it stopped in the middle of it, it was very dark there and we thought that we would die." - aPo!lo
    no votes  

  13. #13
    SMa's Avatar
    Registered
    05/11/03
    Location
    ?
    Posts
    5,782
    iTrader
    12 (100%)
    Mentioned
    0 Post(s)
    Ik had al iets gelijkaardigs
    (maar ik blijf het toch vreemd vinden dat dit nodig is, bvb Directory.getParent(path) geeft de url ook terug met "\\")
    Code:
    public static String clearExpressions(String input)
    {
    	char[] c = { '\\' };		// Split werkt enkel met arrays
    	String[] tmp = input.Split(c);
    	String cleared = tmp[0];
    	for (int j = 1; tmp.Length > 1 && j < tmp.Length; j++)
    	{
    		cleared += '/' + tmp[j];
    	}
    	return cleared;
    }
    Toch bedankt
    no votes  

  14. #14
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Ergens is dat logisch. Een \ is in vele talen een escape karakter. Denk maar aan \n, \t... Als die dan een \ tegenkomt gaat die een escape karakter verwachten.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in