如果有人能夠幫助我/爲此提供建議,我將非常感激。舊的switcheroo(文件中的開關位置)
我有一個文件,大概50000行左右,這些文件每週生成。每條線的內容類型相同。
原始文件:
address^name^notes
,但我需要進行切換。我需要能夠切換(在每一行)地址與名稱。因此交換機已經完成後,名稱將是第一個,然後地址,並指出,像這樣:
結果文件:
name^address^notes
如果有人能夠幫助我/爲此提供建議,我將非常感激。舊的switcheroo(文件中的開關位置)
我有一個文件,大概50000行左右,這些文件每週生成。每條線的內容類型相同。
原始文件:
address^name^notes
,但我需要進行切換。我需要能夠切換(在每一行)地址與名稱。因此交換機已經完成後,名稱將是第一個,然後地址,並指出,像這樣:
結果文件:
name^address^notes
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...
}
如果有任何增長或重新使用此過程的機會,我建議不要使用ReadAllLines路由,但是50K行可能會成爲內存管理員。 Mick Walker的解決方案將確保內存不一定被使用。 – 2009-12-01 15:23:17
公平的評論,這確實不會擴展到非常大的文件,在這方面米克沃克有一個更好的解決方案。 – Oded 2009-12-01 16:01:27
去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);
}
}
}
「Go go gadget REGEX!」 - 我愛的熱情:) – Basic 2009-12-01 15:08:01
哈哈我也+1。 – 2009-12-01 16:13:13
這個怎麼樣?
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();
+1 – 2009-12-01 15:12:25
您是否需要做到這一點,或者是否有可能讓代碼創建第二個文件,將切換的行放入? – 2009-12-01 15:04:11
兩種方式都不錯 – 2009-12-01 15:05:50
這對於awk來說確實很簡單。 – 2009-12-01 15:14:27