C# 如何在C语言中将超文本或下标转换为普通文本#

C# 如何在C语言中将超文本或下标转换为普通文本#,c#,slug,superscript,subscript,C#,Slug,Superscript,Subscript,我正在写一个slug生成器来生成漂亮的url。我想将m²转换为m2,但要以一种通用的方式,对所有上标(或下标)进行转换,而不仅仅是一个简单的replace语句 有什么想法吗?如果您的字符串出现在URL中,那么我假设它是某种unicode字符形式的常规非格式化文本(例如,与MS Word文档相反)。在unicode中。它们没有那么多,一个简单的switch语句就可以了 如果您试图将可能包含各种字符的格式化文本转换为上标或下标,这意味着它们不能直接表示为unicode,这在很大程度上取决于文本的格式

我正在写一个slug生成器来生成漂亮的url。我想将m²转换为m2,但要以一种通用的方式,对所有上标(或下标)进行转换,而不仅仅是一个简单的replace语句


有什么想法吗?

如果您的字符串出现在URL中,那么我假设它是某种unicode字符形式的常规非格式化文本(例如,与MS Word文档相反)。在unicode中。它们没有那么多,一个简单的switch语句就可以了


如果您试图将可能包含各种字符的格式化文本转换为上标或下标,这意味着它们不能直接表示为unicode,这在很大程度上取决于文本的格式。如果是这样,请在问题中提供更多信息。

谢谢约翰,你让我走上了正确的道路。我使用的代码如下所示:

public string ConvertSuperscript(string value)
{
    string stringFormKd = value.Normalize(NormalizationForm.FormKD);
    StringBuilder stringBuilder = new StringBuilder();

    foreach (char character in stringFormKd)
    {
        UnicodeCategory unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(character);
        if (unicodeCategory != UnicodeCategory.NonSpacingMark)
        {
            stringBuilder.Append(character);
        }
    }

    return stringBuilder.ToString().Normalize(NormalizationForm.FormKC);
}

我以前尝试过规范分解,但它需要兼容性分解才能正常工作。

请注意,Unicode中的所有超级和下标都会分解为它们的普通字符对应项。因此,实际上,在没有硬编码的
开关
语句的情况下,这应该可以工作。