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