如果要转换标准 unicode 下标块([0x2080..0x209F] 符号)
您可以使用此代码:
http://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts
/// <summary>
/// From subscript (standard subscript block [0x2080..0x209F] only) to normal
/// </summary>
public static String FromSubscript(String value) {
if (String.IsNullOrEmpty(value))
return value;
Char[] Symbols = new Char[] {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-', '=', '(', ')', '?', // <- '?' unknown/not standard symbols
'a', 'e', 'o', 'x', '\u0259', 'h', 'k', 'l', 'm', 'n', 'p', 's', 't', '?', '?', '?' }; // <- u0259 - small latin shwa
StringBuilder result = new StringBuilder(value.Length);
foreach (Char ch in value) {
int v = (int) ch;
if ((v >= 0x2080) && (v <= 0x209F))
result.Append(Symbols[v - 0x2080]);
else
result.Append(ch);
}
return result.ToString();
}
...
String test = "O₂";
Debug.Assert(String.Equals(FromSubscript(test), "O2", StringComparison.Ordinal));