旧的switcheroo(文件中的开关位置)

时间:2009-12-01 14:56:19

标签: c# winforms string text switch-statement

如果有人可以帮助我/就此提出建议,我将非常感激。

我有一个文件,可能大约有50000行,这些文件是每周生成的。每一行在内容类型方面都是相同的。

原始档案:

address^name^notes

但我需要执行切换。我需要能够使用名称切换(在每一行)地址。所以在切换完成后,名称将首先出现,然后是地址,然后是注释,如下所示:

结果文件:

name^address^notes

3 个答案:

答案 0 :(得分:4)

现在50,000不是那么多,所以只需阅读整个文件并输出想要的格式就可以了:

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...
}

答案 1 :(得分:4)

这个怎么样?

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();

答案 2 :(得分:0)

Go go gadget 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);
        }
    }
}