我正在编写一个用于制作精美网址的slug生成器。我想将m2转换为m2,但是以通用的方式将其转换为所有上标(或下标),而不仅仅是简单的替换语句。
有什么想法吗?
答案 0 :(得分:6)
感谢约翰内斯,你让我走上正轨。我让它工作的代码如下:
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);
}
之前我尝试过规范分解,但它需要兼容性分解才能正常工作。
答案 1 :(得分:1)
如果你的字符串是在URL中,那么我认为它是某种常见的非格式化文本,形式为unicode字符(例如,与MS Word doc相反)。在unicode中,you can only have certain characters as superscript or subscript。它们并不多,只需要一个简单的switch语句即可。
如果您尝试将包含所有类型字符的格式化文本转换为上标或下标,则意味着它们不会直接表示为unicode,并且它将在很大程度上取决于文本的格式。如果是,请在问题中提供更多信息。