我正在編寫一個用於製作漂亮的URL的slu generator發生器。我想將m2轉換爲m2,但是以通用方式爲所有上標(或下標)執行此操作,而不僅僅是一個簡單的替換語句。如何將超級腳本或腳標轉換爲C中的正常文本#
任何想法?
我正在編寫一個用於製作漂亮的URL的slu generator發生器。我想將m2轉換爲m2,但是以通用方式爲所有上標(或下標)執行此操作,而不僅僅是一個簡單的替換語句。如何將超級腳本或腳標轉換爲C中的正常文本#
任何想法?
如果你的字符串是在URL中,那麼我認爲它是某種以unicode字符形式的常規非格式文本(例如相對於MS Word文檔)。在unicode中,you can only have certain characters as superscript or subscript。他們並不是那麼多,一個簡單的轉換語句就可以完成這項工作。
如果您嘗試將可能包含各種字符的格式化文本轉換爲上標或下標,這意味着它們不會直接表示爲unicode,並且這將取決於文本的格式。如果是這樣,請在問題中提供更多信息。
謝謝Johannes,你讓我走在正確的軌道上。與我它得到工作的代碼如下:
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中的所有超級腳本和下標都會將其分解爲正常字符對應字符。所以這應該沒有任何字符的任意選擇的硬編碼'switch'聲明,實際上。 – Joey 2010-04-20 08:20:39