如果有人可以帮助我/就此提出建议,我将非常感激。
我有一个文件,可能大约有50000行,这些文件是每周生成的。每一行在内容类型方面都是相同的。
原始档案:
address^name^notes
但我需要执行切换。我需要能够使用名称切换(在每一行)地址。所以在切换完成后,名称将首先出现,然后是地址,然后是注释,如下所示:
结果文件:
name^address^notes
答案 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);
}
}
}