我需要按字母顺序对未知字符串进行排序。我需要在大写字母前面加上大写字母,但仍然保留顺序。 例: 输入:这只是一个游戏 输出:AaeGhIiJmssTtu
请帮忙。 谢谢
答案 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()));