Преобразовать строку / целое число в верхний индекс в C # - PullRequest
14 голосов
/ 22 июня 2011

Есть ли встроенная функция .NET или простой способ преобразования из:

"01234"

до:

"\u2070\u00B9\u00B2\u00B3\u2074"

Обратите внимание, что верхние индексы 1, 2 и 3 не находятся в диапазоне \ u2070- \ u209F , но \ u0080- \ u00FF .

1 Ответ

19 голосов
/ 22 июня 2011

РЕДАКТИРОВАТЬ: я не заметил, что надстрочные символы были не так просто, как \u2070 - \u2079. Вы, вероятно, хотите настроить отображение между персонажами. Если вам нужны только цифры, вы можете довольно легко проиндексировать строку:

const string SuperscriptDigits = 
    "\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079";

Затем с помощью LINQ:

string superscript = new string(text.Select(x => SuperscriptDigits[x - '0'])
                                    .ToArray());

или без:

char[] chars = text.ToArray();
for (int i = 0; i < chars.Length; i++)
{
    chars[i] = SuperscriptDigits[chars[i] - '0'];
}
string superscript = new string(chars);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...