2015-10-07 135 views
0

排序阵列我有一个代码,这使得在一个txt文件中使用的所有字母的数组,名为“failas.txt”:从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(); 
    } 
} 

它颠倒了数组。不过,我需要它不要扭转,但按字母顺序排序,排除像,.,:,"等符号基本上排除了不是一个字母的一切。

+4

那么你正在扭转它。你期望什么?编辑:另外,你所有的'ToArray'调用都是多余的。 – leppie

+0

好吧,也许我说错了。我从它删除反向。但是有两个问题,一个 - 我不知道如何排除这些不需要的非字母符号,第二个,txt文件中的文本是在1257年编码的,所以这意味着非英文字母在阵列。我不知道如何解决这个问题 –

回答

0

为了解决反向和字母的担忧:使用Regex

Regex rgx = new Regex("[^a-zA-Z0-9 -]"); 
str = rgx.Replace(str, ""); 

也见

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

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

看到Sort a list alphabetically

因为你可以看看这个解决方案的特点: How do I remove all non alphanumeric characters from a string except dash?

+0

现在对它进行排序,但问题依然如此,大写字母在数组的开头,非英文字母在结尾。它的大写或小写或者它们的非英文符号应该没有关系,比如这些。 –

+0

你看过吗? https://msdn.microsoft.com/en-us/goglobal/bb688122#euf – Resber

+0

我不确定是否有专门为您需要的语言字符集提供支持。您可能会考虑使用自己的订单定义编写自己的排序方法,因为这可能会很麻烦。 – Resber

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

这是为你做的。

+0

我写了答案,当你没有更新你的问题。现在你已经更新了它,并使它变得有趣。我会做的。干杯! – AnjumSKhan

0

这条线怎么样?

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