在c#中按字母顺序排序字符串

时间:2018-06-11 12:18:18

标签: c# string sorting

我需要按字母顺序对未知字符串进行排序。我需要在大写字母前面加上大写字母,但仍然保留顺序。 例: 输入:这只是一个游戏 输出:AaeGhIiJmssTtu

请帮忙。 谢谢

2 个答案:

答案 0 :(得分:4)

删除空格,然后按小写字符排序,然后按字符是否小写:

string s = "This Is Just A Game";

string result = string.Concat(
    s.Replace(" ", "")
    .OrderBy(char.ToLower)
    .ThenBy(char.IsLower));

Console.WriteLine(result);

.ThenBy(char.IsLower)的工作原因是false < true,因此大写字符(char.IsLower()返回false)将在小写字符之前排序({1} }返回char.IsLower())。

答案 1 :(得分:0)

我更喜欢Sort方法

string s = "This Is Just A Game"; //what about blanks?
var c = s.ToList<char>();
c.Sort(delegate (char x, char y)
{
    if (char.ToLower(x) == char.ToLower(y)) 
        return (char.IsLower(x)? 1:-1);
    return (char.ToLower(x) > char.ToLower(y) ? 1:-1);
});
Console.WriteLine(new string(c.ToArray()));