在C#中将字符串/整数转换为上标

时间:2011-06-21 20:31:03

标签: c# unicode

是否有内置的.NET函数或简单的转换方式:

"01234"

为:

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

请注意,上标1,2和3不在\u2070-\u209F\u0080-\u00FF范围内。

1 个答案:

答案 0 :(得分:19)

编辑:我没有注意到上标字符不像\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);