【问题标题】:Sorting a phone list in C# [duplicate]在C#中对电话列表进行排序[重复]
【发布时间】:2023-03-03 07:40:18
【问题描述】:

我有一个任务,我必须按名称对电话列表进行排序。我有以下代码。我知道这是一团糟,有些东西不见了,但这是我现在得到的。有些变量是葡萄牙语的,但我会尽力使其易于理解。这是一个不同的情况,我不允许使用 LINQ 或列表

static void Main(string[] args)
{
    string file= "nomes.txt";
    string[] text = File.ReadAllLines(file);

    // Reads line by line
    for (int i = 0; i < text.Length; i++)
    {
        string line = text[i];

        for (int j = 0; j < line.Length; j++)
        {
            if (char.IsWhiteSpace (line [j-1]) == true)
                {
                    string[] palavra = line.Split(',');

                    if (char.IsDigit(line [j]) == true)
                    {
                        string[] nr = line.Split('-');
                        Console.WriteLine(line);
                    }
                }
        }
    }

    Console.ReadKey();
}

文件如下所示:

 Joaquim Lopes da Silva 932 000 999
 Maria da Conceição Granja 91 384 75 34
 Herculano Lopes Vieira 253334556

预期输出:

Silva, Joaquim Lopes da - 932 000 999
Granja, Maria da Conceição - 913 847 534
Vieira, Herculano Lopes - 253 334 556

【问题讨论】:

  • 你的txt文件是什么样子的??
  • 什么是 posletra ?
  • 检查编辑。 Posletra 代表每个字母的位置,那里有注释
  • 副本的答案也不使用 LINQ

标签: c# arrays for-loop text


【解决方案1】:

首先将所有数据读入一个List

class Item {
    public string First;
    public string Second;
    ...
}
var items = ReadFromFile();

然后使用 LINQ:

var sortedItems = items.OrderBy(entry, entry.First);

其中 entry.First 是“Silva”或“Granja”等的字符串字段。

【讨论】:

  • 我还在基础知识上,所以我不应该使用任何高级的东西。只有数组、方法和循环。另外我想知道我的代码是否适合它。
  • 这是高级的吗?很原始。
  • @HenriqueGuimarães,也许你会发现对数组更友好:var sortedItems = items.OrderBy(entry, entry.First).ToArray();
  • 在这个作业中我不能使用 LINQ 方法
猜你喜欢
  • 2014-10-27
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 2018-10-11
  • 2014-12-26
相关资源
最近更新 更多