2009-12-04 68 views
3

這看起來很瑣碎,但我沒有找到Google的答案。C#最高字符串

我在字符串排序列表末尾的信號量字符串值很高。

在我看來,char.highest.ToString()應該這樣做 - 但這比較低,不高。

很明顯,創建一個最高可能的字符串並不是真的可能,因爲它總是會低於相同的事物+更多的數據,但我排序的字符串都是有效的路徑名,因此使用的符號受到限制。

在迴應的評論:

在德爾福預unicode的日子裏,我也只會使用#255。我只想要一個比任何可能的路徑名都要高的字符串。這應該是微不足道的 - 爲什麼不是?

回覆#2:

這並不是說需要定點排序,它的處理之後。我有多個我正在合併的列表(簡單合併不會完成這項工作),並且我複製了代碼或者我有一些總是比較高的虛擬值。

+1

你能舉個例子嗎? – 2009-12-04 19:54:33

+3

什麼意思是最高字符串?你能舉個例子嗎? – Tinister 2009-12-04 19:55:24

+0

你爲什麼需要這個?也許如果你告訴我們爲什麼你的排序算法需要一個哨兵(這是這種事情的正確名稱),也許有人會給你一個更好的方式來做到這一點。 – 2009-12-04 21:37:09

回答

4

最高字符的字符串表示形式只有一個字符長。

爲什麼不在分揀後將它作爲信號量追加它,而不是試圖使它事後排序?

或者,您可以指定自己的比較器,將您的令牌排序在任何其他字符串之後,否則將調用默認比較器。

+2

自定義比較器可能是他這樣做的最不起作用的方式。讓它說一些令牌比其他所有字符串(除本身之外)都大。 – 2009-12-05 17:20:11

0

像這樣?

public static String Highest(this String value) 
{ 
    Char highest = '\0'; 
    foreach (Char c in value) 
    { 
     highest = Math.Max(c, highest); 
    } 
    return new String(new Char[] { highest }); 
} 
+1

你可能會失敗。輸入:「zz」。你的輸出「​​z」較低。 – 2009-12-04 21:35:39

2

當試圖將空值置於LINQ OrderBy()語句的列表底部時,我遇到了同樣的問題。我結束了使用... ...

Char.ConvertFromUtf32(0x10ffff) 

...哪一個工作的治療。

+0

這看起來可能會起作用。我會試一試。 – 2011-03-16 03:32:47