Я пишу генератор слагов для создания красивых URL-адресов. Я хотел бы преобразовать m2 в m2, но обычным способом, который делает это для всех надстрочных (или подстрочных) индексов, а не только для простого оператора замены.
Любые идеи?
Я пишу генератор слагов для создания красивых URL-адресов. Я хотел бы преобразовать m2 в 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-адрес, я предполагаю, что это какой-то обычный неформатированный текст в форме символов Unicode (в отличие, например, от документа MS Word). В юникоде вы можете использовать только определенные символы в качестве надстрочного или подстрочного индекса. Их не так много, и с этим справится простой оператор switch.
Если вы пытаетесь преобразовать форматированный текст, который может содержать всевозможные символы в виде надстрочного или подстрочного индекса, это означает, что они не представлены напрямую как Unicode, и это будет во многом зависеть от формата текста. Если да, просьба дать более подробную информацию в вопросе.
switch
оператора произвольного выбора символов.
- person Joey; 20.04.2010