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

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

有任何想法吗?

谢谢约翰内斯,你让我走上正轨。 我让它工作的代码如下:

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); } 

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

如果您的字符串在URL中,那么我认为它是某种常见的非格式化文本,其forms为unicode字符(例如,与MS Word文档相对)。 在unicode中, 您只能将某些字符作为上标或下标 。 它们并不是那么多,并且一个简单的switch语句可以完成这项工作。

如果您尝试将包含所有类型字符的格式化文本转换为上标或下标,则意味着它们不会直接表示为unicode,并且它将在很大程度上取决于文本的格式。 如果是,请在问题中提供更多信息。