2015-01-03 3 views
-3

Я пытаюсь закодировать программу на C#, сортирующую текстовый файл, содержащий фамилию, за которой следует запятая, и за ней следует имя. Как я могу описать его текстовое имя в алфавитном порядке.сортировка текстового файла по алфавиту в C#

+1

где код? введите здесь некоторый код, который поможет ответить на вашу проблему. – ketan

+0

это мой первый раз codding с C# Я понятия не имею, как это сделать, мне нужно сделать это из Scrach здесь не несколько примеров: – user3795105

+0

имен cse1302_Lecture18_FileIO_Prez { класс Программа { статической силы Main (string [] арг) { StreamReader sr = новый StreamReader ("NameInput.txt"); // если файл в bin/debug char [] delims = {','}; // string [] names = {"", ""}; while (! Sr.EndOfStream) { string data_line = sr.ReadLine(); // names = data_line.Split (delims); Console.WriteLine (data_line); } sr.Close(); – user3795105

ответ

5

Существует множество вариантов, в зависимости от деталей. Непроверенный, но что-то вроде этого должно быть близко.

string inFile = @"C:\someInFile.txt" 
string outFile = @"C:\someOutFile.txt" 
var contents = File.ReadAllLines(inFile); 
Array.Sort(contents); 
File.WriteAllLines(outFile, contents) 
+0

Упрощенный, здесь использовались два текстовых файла, Возможно, он использовал тот же файл для записи вывода. – Kurubaran

+0

Это действительно просто. Благодаря! –

0

Это VB.NET, но перевод должен быть легким:

Public Sub FileCreateReadAndSort() 
    'Read data from database and write to unsorted text file 
    Dim dv As DataView = DataLib.QryToData("select * from gen where rn<10", EnumLib.DBList.Gen, EnumLib.DataObj.DataView) 
    Dim S As String = "" 
    For i As Integer = 0 To dv.Count - 1 
     With dv(i) 
      S = S & RTrim(.Item("surname")) & ", " & RTrim(.Item("name")) & vbCrLf 
     End With 
    Next 
    Dim SW As IO.StreamWriter = New IO.StreamWriter("c:\temp\fileOriginal.txt") 
    SW.Write(S) 
    SW.Flush() 
    SW.Close() 
    SW.Dispose() 

    'read in unsorted text file 
    Dim SR As IO.StreamReader = New IO.StreamReader("c:\temp\fileOriginal.txt") 
    Dim S2 As ArrayList = New ArrayList 
    Do While Not SR.EndOfStream 
     S2.Add(SR.ReadLine) 
    Loop 

    'sort file lines and write to sorted file 
    Dim S3 As Array = S2.ToArray 
    Array.Sort(S3) 

    Dim SW2 As IO.StreamWriter = New IO.StreamWriter("c:\temp\fileSorted.txt") 
    For i As Integer = 0 To S3.Length - 1 
     SW2.Write(S3(i) & vbCrLf) 
    Next i 
    SW2.Flush() 
    SW2.Close() 
    SW2.Dispose() 
End Sub 

Надеется, что это помогает!

Dave

0

Вы можете использовать это,

FileStream readerStream = new FileStream(@"Desktop\Source\text.txt", FileMode.Open); 
string[] content = null; 

//Read the content 
using (StreamReader reader = new StreamReader(readerStream)) 
{ 
    content = reader.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 

    //Remove the entries in the file 
    readerStream.SetLength(0); 
} 

FileStream writerStream = new FileStream(@"Desktop\Source\text.txt", FileMode.OpenOrCreate); 
using (StreamWriter writer = new StreamWriter(writerStream)) 
{ 
    //Sort the content and write back to the same file 
    Array.Sort(content); 
    writer.Write(string.Join(Environment.NewLine, content)); 
} 
Смежные вопросы