首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串到数组,按第3字/列排序

字符串到数组,按第3字/列排序
EN

Stack Overflow用户
提问于 2017-08-03 15:33:47
回答 3查看 122关注 0票数 3

我有一个字符串,其中包含数字、单词和换行符,我将其拆分为数组。

如果我运行Array.Sort(lines),它将按第1列Number对数组进行数字排序。

如何将数组按第3列( Color )按字母顺序排序?

注意:它们不是真实的列,只是分隔单词的空格。

我无法修改字符串以更改结果。

代码语言:javascript
运行
复制
| Number     | Name       | Color      |
|------------|------------|------------|
| 1          | Mercury    | Gray       |
| 2          | Venus      | Yellow     |
| 3          | Earth      | Blue       |
| 4          | Mars       | Red        |

C#

示例:http://rextester.com/LSP53065

代码语言:javascript
运行
复制
string planets = "1 Mercury Gray\n"
               + "2 Venus Yellow\n"
               + "3 Earth Blue\n"
               + "4 Mars Red\n";


// Split String into Array by LineBreak
string[] lines = planets.Split(new string[] { "\n" }, StringSplitOptions.None);


// Sort
Array.Sort(lines);


// Result
foreach(var line in lines)
{
    Console.WriteLine(line.ToString());
}

所需的排序数组结果

代码语言:javascript
运行
复制
3 Earth Blue
1 Mercury Gray
4 Mars Red
2 Venus Yellow
EN

Stack Overflow用户

回答已采纳

发布于 2017-08-03 15:39:47

试试下面的代码:

代码语言:javascript
运行
复制
string planets = "1 Mercury Gray \n"
                    + "2 Venus Yellow \n"
                    + "3 Earth Blue \n"
                    + "4 Mars Red \n";

var lines = planets.Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
    .OrderBy(s => s.Split(' ')[2])
    .ToArray();

foreach (var line in lines)
{
    Console.WriteLine(line);
}

编辑:谢谢@凯文!

票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45488713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档