2010-04-20 62 views

回答

1

如果你的字符串是在URL中,那麼我認爲它是某種以unicode字符形式的常規非格式文本(例如相對於MS Word文檔)。在unicode中,you can only have certain characters as superscript or subscript。他們並不是那麼多,一個簡單的轉換語句就可以完成這項工作。

如果您嘗試將可能包含各種字符的格式化文本轉換爲上標或下標,這意味着它們不會直接表示爲unicode,並且這將取決於文本的格式。如果是這樣,請在問題中提供更多信息。

+1

請注意,Unicode中的所有超級腳本和下標都會將其分解爲正常字符對應字符。所以這應該沒有任何字符的任意選擇的硬編碼'switch'聲明,實際上。 – Joey 2010-04-20 08:20:39

4

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

我之前試過的標準分解,但其所需的兼容性分解才能正常工作。