素敵な URL を作成するためのスラッグ ジェネレーターを作成しています。m² を m2 に変換したいのですが、単純な置換ステートメントだけでなく、すべての上付き文字 (または下付き文字) に対してこれを行う一般的な方法で行います。
何か案は?
素敵な 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に含まれている場合、それはユニコード文字の形式の通常のフォーマットされていないテキストであると思います(たとえば、MS Wordドキュメントとは対照的です)。Unicodeでは、上付き文字または下付き文字として特定の文字のみを使用できます。それらはそれほど多くはなく、単純なswitchステートメントで十分です。
上付き文字または下付き文字としてすべての種類の文字を含む可能性のあるフォーマットされたテキストを変換しようとしている場合、それはそれらがユニコードとして直接表されないことを意味し、テキストのフォーマットに大きく依存します。もしそうなら、質問でより多くの情報を与えてください。