Вам просто нужен словарь для сопоставления значений, а затем вы можете использовать Linq для их перевода и создания новой строки из них.
private static Dictionary<char, char> scriptMapping = new Dictionary<char, char>()
{
['¹'] = '1',
['²'] = '2',
['³'] = '3',
['⁴'] = '4',
['⁵'] = '5',
['⁶'] = '6',
['⁷'] = '7',
['⁸'] = '8',
['⁹'] = '9',
['⁰'] = '0',
['⁺'] = '+',
['⁻'] = '-',
['⁽'] = '(',
['⁾'] = ')',
};
private static string ConvertSuperscriptToText(Match m){
string res = m.Groups[1].Value;
res = "^" + new string(res.Select(c => scriptMapping[c]).ToArray());
return res;
}
Вы также можете создать свое регулярное выражение из словаря, чтобы есть только одно место для добавления новых подписчиков.
string supChars = "([" + new string(scriptMapping.Keys.ToArray()) + "]+)"