代码之家  ›  专栏  ›  技术社区  ›  Loren Pechtel

C最高弦

  •  3
  • Loren Pechtel  · 技术社区  · 16 年前

    这看起来很琐碎,但我找不到谷歌的答案。

    我在寻找一个字符串的高值,这个字符串是在一个已排序的字符串列表的末尾。

    在我看来,char.highest.tostring()应该做到这一点——但相比之下,这是低的,而不是高的。

    显然,创建一个最高可能的字符串是不可能的,因为它总是低于同一个值+更多的数据,但是我正在排序的字符串都是有效的路径名,因此使用的符号是受约束的。

    针对评论:

    在Delphi的前Unicode时代,我只会使用255。我只想要一个字符串,它比任何可能的路径名都高。这应该是微不足道的——为什么不是呢??

    响应2:

    不是分类需要哨兵,而是事后处理。我有多个列表,我有点合并(一个简单的合并不会做这项工作),要么我重复代码,要么我有一个总是比较高的伪值。

    3 回复  |  直到 16 年前
        1
  •  4
  •   Anon.    16 年前

    最高字符的字符串表示形式只有一个字符长。

    为什么不在排序后将其作为信号量追加,而不是尝试使其成为随后排序的对象?

    或者,您可以指定自己的比较器,该比较器在任何其他字符串之后对令牌进行排序,并以其他方式调用默认比较器。

        2
  •  3
  •   Oundless    15 年前

    当我试图将空值放在LINQ列表的底部时,我也遇到了同样的问题 OrderBy() 语句。我最后用…

    Char.ConvertFromUtf32(0x10ffff)
    

    …真是太好了。

        3
  •  0
  •   ChaosPandion    16 年前

    像这样的?

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