arytmetyka elementów tablicy char

0
string txt = zwyklyTekst.Text;
int a = txt[0]+1;

jak to zrobić w odwrotną stronę? czyli do txt[0] przypisać jakąś wartość liczbową która będzie odpowiadać za wyświetlenie odpowiedniego znaku?

1

W prosty sposób się nie da, co wynika z faktu że łańcuchy w C# są niemutowalne - jeśli bardzo czegoś takiego potrzebujesz, spróbuj

string text = "ala ma kota";
char[] chars = text.ToCharArray();
chars[1] = 'g';
text = new string(chars);
Console.Write(text);

ALBO (jeśli planujesz więcej operować na tekście) użyć klasy do tego przeznaczonej, czyli StringBuilder - to chyba lepszy sposób.

string text = "ala ma kota";
StringBuilder b = new StringBuilder(text);
b[1] = 'g';
text = b.ToString();
Console.Write(text);
0

ok ale chodziło mi o to żeby np. w b[1] podać wartość liczbową 97 co odpowiada literce "a", następnie dodać do b[1] + 1 = 98 co daje literkę "b", itd. Znam to z C++, czy da się to robić w C#?

1

Po zrobieniu powyższego nie ma z tym żadnego problemu. Swoją drogą w C++ nie ma typu takiego jak char w c#, odpowiednik c++-owego char to w C# byte.

Po prostu w momencie gdzie chcesz użyć chara, zamiast pisać, powiedzmy, '#', piszesz (char)35.
( czyli nie b[1] = 'g' tylko b[1] = (char)57 )

0

da się, trzeba tylko jawnie rzutować, np.

byte b=1;
char c='a';
b=(byte)c;
c=(char)b;

ale tak się nie powinno robić… niech char zostanie charem.
Za to możesz go inkrementować

char ch='a';
ch++;       /*  ch='b'  */
ch+='\x2';  /*  ch='d'  */

1 użytkowników online, w tym zalogowanych: 0, gości: 1