Старый переключатель (положение переключателя в файле) - PullRequest
0 голосов
/ 01 декабря 2009

Буду очень признателен, если кто-нибудь сможет мне помочь / дать совет по этому вопросу.

У меня есть файл, вероятно, около 50000 строк, эти файлы создаются еженедельно. каждая строка идентична с точки зрения типа контента.

оригинальный файл:

address^name^notes

но мне нужно выполнить переключение. мне нужно иметь возможность переключать (на каждой строке) адрес с именем. поэтому после того, как переключение было выполнено, сначала будут имена, а затем адреса, а затем заметки, например:

файл результатов:

name^address^notes

Ответы [ 3 ]

4 голосов
/ 01 декабря 2009

Как насчет этого?

StreamWriter sw = new StreamWriter("c:\\output.txt");
        StreamReader sr = new StreamReader("c:\\input.txt");
        string inputLine = "";

        while ((inputLine = sr.ReadLine()) != null)
        {
            String[] values = null;
            values = inputLine.Split('^');
            sw.WriteLine("{0}^{1}^{2}", values[1], values[0], values[2]);
        }
        sr.Close();
        sw.Close();
4 голосов
/ 01 декабря 2009

50000 не так уж много в наши дни, поэтому простое чтение всего файла и вывод нужного формата должно работать нормально:

string[] lines = File.ReadAllLines(fileName);
string newLine = string.Empty;

foreach (string line in lines)
{
    string[] items = line.Split(myItemDelimiter);
    newLine = string.Format("{0},{1},{2}", items[1], items[0], items[2]);
    // Append to new file here...
}
0 голосов
/ 01 декабря 2009

Go go гаджет REGEX!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static string Switcheroo(string input)
        {
            return System.Text.RegularExpressions.Regex.Replace
                (input,
                 @"^([^^]+)\^([^^]+)\^(.+)$",
                 "$2^$1^$3",
                 System.Text.RegularExpressions.RegexOptions.Multiline);
        }

        static void Main(string[] args)
        {
            string input = "address 1^name 1^notes1\n" +
                     "another address^another name^more notes\n" +
                     "last address^last name^last set of notes";

            string output = Switcheroo(input);
            Console.WriteLine(output);
            Console.ReadKey(true);
        }
    }
}
...