C# 如何通过保留空格对包含空格的字符串中的字符进行排序
输入字符串可能如下所示: “2 4 8 6”或“a b z g h” 输出字符串应如下所示: “2 4 6 8”和“a b g h z” 我正试图用C#LINQ和其他简单的方法找到答案。 作为初学者,我在这个链接中讨论了这个问题: 但是,我无法按照我希望的顺序对数组进行正确排序C# 如何通过保留空格对包含空格的字符串中的字符进行排序,c#,string,linq,sorting,C#,String,Linq,Sorting,输入字符串可能如下所示: “2 4 8 6”或“a b z g h” 输出字符串应如下所示: “2 4 6 8”和“a b g h z” 我正试图用C#LINQ和其他简单的方法找到答案。 作为初学者,我在这个链接中讨论了这个问题: 但是,我无法按照我希望的顺序对数组进行正确排序 编辑:请注意,字符之间的空格数为1。如果可能的话,请考虑这个测试用例“2 15 3”。 尝试分割输入字符串并排序如下: IEnumerable<string> sequence = "a b z g h".S
编辑:请注意,字符之间的空格数为1。如果可能的话,请考虑这个测试用例“2 15 3”。 尝试分割输入字符串并排序如下:
IEnumerable<string> sequence = "a b z g h".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).OrderBy(p => p);
IEnumerable sequence=“a b z g h”.Split(新字符[]{''},StringSplitOptions.RemoveEmptyEntries).OrderBy(p=>p);
在空格处拆分文本。然后对结果值进行排序,并用空格将它们连接在一起:
var result = string.Join(" ", text.Split(' ').OrderBy(v => v));
另一种可能性:
var res = "1 2 3 4 5".Split(' ')
.OrderBy(x=>x)
.Aggregate((r,x) => r +" "+ x)
使用LINQ
var input1 = "2 4 8 6";
var input2 = "a b z g h";
var input3 = "2 4 8 6 a b z g h";
var output = input3.Split(' ').OrderBy(x => x).ToList();
foreach (var sortedChars in output)
{
Console.WriteLine(sortedChars);
}
使用内置数组。排序:
var arr = input3.Split(' ');
Array.Sort(arr);
foreach (var s in arr)
{
Console.WriteLine(s);
}
如果输入字符串是
“123 abc 8+1 xyz 4 9-5”
那么输出字符串是什么?空格是否总是用作“分隔符”,意思是,您不能按空格拆分字符串,然后对其进行排序吗?非空格块之间的空格数是否总是1?最简单(它可以完成提供的两个示例,但在一般情况下可能失败)stringresult=string.Join(“”),source.Split(“”).OrderBy(x=>x))代码>我们拆分初始字符串,对子字符串进行排序,然后将它们合并回string@K.Gaka混乱的程序员:作为一个初学者是很好的,但是,请用正确的方式陈述问题:要么描述一般情况(参见我的怪异例子)或者明确地说,字符串只能包含由空格分隔的单个字母/数字。在你的问题中,“字符串可能看起来”意味着该字符串可能看起来很不一样一个漂亮的LINQ one LINQ liner,我多么喜欢它。我建议StringSplitOptions.removemptyEntries
。这样,如果字符之间有多个空格,就不会得到空字符串。回答得好。我建议使用text.Split(新[]{''},StringSplitOptions.RemoveEmptyEntries)代码>以防字符之间有多个空格。
var arr = input3.Split(' ');
Array.Sort(arr);
foreach (var s in arr)
{
Console.WriteLine(s);
}