Thread: [PROG][C#] charset probleem '\'
-
17-09-2007, 14:03 #1
[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
-
-
17-09-2007, 14:07 #2Member
- Registered
- 17/07/02
- Location
- Sint-Jans-Molenbeek
- Posts
- 447
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Regex.Unescape
no votes
-
17-09-2007, 14:12 #3
thx, daarmee zal het wel lukken

:edit:
of toch net niet
=> ArgumentExeption was unhandled: parsing "\img\kunst\galerij", unrecognized escape sequence \iCode:String test = "\\img\\kunst\\galerij"; String unescapedTest = Regex.Unescape(test);
Last edited by SMa; 17-09-2007 at 14:17.
no votes
-
17-09-2007, 20:18 #4Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
ehm
replace("\\\\","\\"); ???
(pseudocode)no votes
-
17-09-2007, 20:33 #5
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
-
17-09-2007, 20:58 #6Member
- 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
-
18-09-2007, 19:37 #7
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
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)Code:public bool autoLoad { get { return autoLoad; } set { } }
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
-
18-09-2007, 19:57 #8Member
- 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
-
18-09-2007, 20:42 #9Crew Member
- 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
-
18-09-2007, 21:01 #10Member
- 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
-
18-09-2007, 21:18 #11no votes
-
18-09-2007, 21:24 #12
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!lono votes
-
18-09-2007, 21:58 #13
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 "\\")
Toch bedanktCode: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; }
no votes
-
18-09-2007, 22:14 #14Crew Member
- 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
