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

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SMa

Legacy Member
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[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 {'\\'})

:help:
vrij irritant probleem :p


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

SMa

Legacy Member
thx, daarmee zal het wel lukken ;)

:edit:
of toch net niet :unsure:
Code:
String test = "\\img\\kunst\\galerij";
String unescapedTest = Regex.Unescape(test);
=> ArgumentExeption was unhandled: parsing "\img\kunst\galerij", unrecognized escape sequence \i

SMa

Legacy Member
nee, dan staat het nog steeds dubbel in de string

maar ik denk dat ik nu wel een vrij goede oplossing heb :p
'\\' replacen door '/' => :applause:

killgore

Legacy Member
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.

SMa

Legacy Member
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 :)

killgore

Legacy Member
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.

Tyfius

Legacy Member
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;

killgore

Legacy Member
ok, ja, da keyword was ook vrij essentieel om te vermelden :doh:

xytro

Legacy Member
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;
		}

SMa

Legacy Member
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 ;)

Tyfius

Legacy Member
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.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan