Преобразование строки/целого в верхний индекс в С#

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

"01234"

в

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

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

Ответы

Ответ 1

EDIT: я не заметил, что символы надстрочного шрифта были не такими простыми, как \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);