Следующие фрагменты кода основаны на представлении букв ASCII .
- A представлено значением 65
- B представленозначение 66
- ... и т. д.
Из массива символов:
char[] letters = { 'A', 'B', 'C', 'D' };
int[] numbers = new int[4];
for (int i = 0; i < 4; i++)
{
numbers[i] = Convert.ToByte(letters[i], CultureInfo.InvariantCulture) - 64;
}
Альтернативный способ:
string myString = "HELLO";
StringBuilder stringAsNumbers = new StringBuilder();
for (int i = 0; i < myString.Length; i++)
{
stringAsNumbers.Append(Convert.ToByte(myString[i], CultureInfo.InvariantCulture) - 64);
}
Позаботьтесь очувствительность к регистру.Приведенный выше код работает только в верхнем регистре, так как 65 - это код ASCII для «A» (не «a»).
Не пытайтесь использовать оператор switch, это будет выглядеть ужасно.
РЕДАКТИРОВАТЬ: Если вы действительно хотите оператор switch, вот оно:
string myString = "AAB";
StringBuilder stringAsNumbers = new StringBuilder();
for (int i = 0; i < myString.Length; i++)
{
switch (myString[i])
{
case 'A':
case 'a':
stringAsNumbers.Append("1");
break;
case 'B':
case 'b':
stringAsNumbers.Append("2");
break;
...
}
}
EDIT: Чтобы получить окончательный string
для StringBuilder
, используйте stringAsNumbers.ToString();