C# -> @ символ
7 отговора
422 прегледа
C# -> @ символ
Здравейте!
Значи, имам един ArrayList със стрингове. Когато искам да взема кой да е елемент от тоз масив и да го присвоя на един прост стринг обект, .НЕТ- а ми цопва едно @ пред стринга в случай, че в него има escape символи от рода на '\n'. Някой да има идея как да го махна тва чудо, че искам да използвам тези символи?
К
Значи, имам един ArrayList със стрингове. Когато искам да взема кой да е елемент от тоз масив и да го присвоя на един прост стринг обект, .НЕТ- а ми цопва едно @ пред стринга в случай, че в него има escape символи от рода на '\n'. Някой да има идея как да го махна тва чудо, че искам да използвам тези символи?
К
Re: C# -> @ символ
Сега сам ше си отговоря... (с помощта на Дешев ъфкорс):
myString.Replace("\\n", "\n");
Адско е:)
myString.Replace("\\n", "\n");
Адско е:)
Re: C# -> @ символ
я, тука някой цапа с голямата лопата ... това което наричаш "решение" е просто кофти patch на още по кофти код ...
@ символа не е част от стринг-а, а е част от синтаксиса на С#, който се обработва от компилатора в момента на декларирането му, а не в момента на ваденето му от array, hashtable, list, или откъдето си го напъхал ...
така че няма как .net-a да ти "цопне" нищо никъде освен ако сам не си го "цопнеш" ...
примерно, този код:
string s1 = "hello \n world \t";
string s2 = @"hello \n world \t";
след като мине през С# компилатора се генерира в следния IL код:
ldstr "hi \nBye\tNo"
ldstr "hi \\nBye\\tNo"
както виждаш компилатора замества всеки <escape char> с <back slash><escape char> в момента на декларация, и когато се attach-ва към него string reference той вече е форматиран ... така че като напъхваш един стринг в array, ти напъхваш само reference-a ... и колкото и да го пъхаш и вадиш, ти пъхаш и вадиш само референса ... това с нищо не променя съдържанието на стринга ... а да не говорим че стринговете в .нет са immutable ...
така че провери си кво правиш там където създаваш стринговете, а не там където вадиш референсите ...

XM TurboCT .. where comfort meets power
@ символа не е част от стринг-а, а е част от синтаксиса на С#, който се обработва от компилатора в момента на декларирането му, а не в момента на ваденето му от array, hashtable, list, или откъдето си го напъхал ...
така че няма как .net-a да ти "цопне" нищо никъде освен ако сам не си го "цопнеш" ...
примерно, този код:
string s1 = "hello \n world \t";
string s2 = @"hello \n world \t";
след като мине през С# компилатора се генерира в следния IL код:
ldstr "hi \nBye\tNo"
ldstr "hi \\nBye\\tNo"
както виждаш компилатора замества всеки <escape char> с <back slash><escape char> в момента на декларация, и когато се attach-ва към него string reference той вече е форматиран ... така че като напъхваш един стринг в array, ти напъхваш само reference-a ... и колкото и да го пъхаш и вадиш, ти пъхаш и вадиш само референса ... това с нищо не променя съдържанието на стринга ... а да не говорим че стринговете в .нет са immutable ...
така че провери си кво правиш там където създаваш стринговете, а не там където вадиш референсите ...
XM TurboCT .. where comfort meets power