从txt文件中排序数组

时间:2015-10-07 17:59:42

标签: c# arrays sorting

我有一个代码,它为txt文件中使用的所有字母创建一个数组,名为“failas.txt”:

using System;
using System.Linq;
using System.Globalization;
using System.Collections.Generic;
using System.Collections;
using System.IO;
using System.Text;
class Program
{
     static void Main()
     {
         string failas = "failas.txt";
         string rodymas = File.ReadAllText(failas, Encoding.GetEncoding(1257));
         Console.OutputEncoding = Encoding.UTF8;
         Console.WriteLine(rodymas);
         char[] masyvas = rodymas.ToArray().Reverse().Where(c => !char.IsWhiteSpace(c)).ToArray();
         foreach (char c in masyvas)

         {
     Console.Write(c + ",");
         }
         Console.ReadLine();
    }
}

它反转阵列。但是我需要它不要反转,而是按字母顺序排序并排除,.:"等符号。基本上排除所有不是一封信。

3 个答案:

答案 0 :(得分:0)

解决反向和按字母顺序排列的问题:

char[] masyvas = rodymas.ToArray().Where(c => !char.IsWhiteSpace(c)).ToArray();

masyvas.Sort(); //Will sort in place alphabetically. 

请参阅Sort a list alphabetically

对于角色,您可以使用Regex

查看此解决方案
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");

另见: How do I remove all non alphanumeric characters from a string except dash?

答案 1 :(得分:0)

char[] masyvas = rodymas.ToArray().OrderBy(o=>o).Where(c => !char.IsWhiteSpace(c)).ToArray();

这适合你。

答案 2 :(得分:0)

这条线怎么样?

        char[] masyvas = rodymas.Where(Char.IsLetter).OrderBy(Char.ToLower).ToArray();