2009-12-01 34 views
0

如果有人能夠幫助我/爲此提供建議,我將非常感激。舊的switcheroo(文件中的開關位置)

我有一個文件,大概50000行左右,這些文件每週生成。每條線的內容類型相同。

原始文件:

address^name^notes 

,但我需要進行切換。我需要能夠切換(在每一行)地址與名稱。因此交換機已經完成後,名稱將是第一個,然後地址,並指出,像這樣:

結果文件:

name^address^notes 
+1

您是否需要做到這一點,或者是否有可能讓代碼創建第二個文件,將切換的行放入? – 2009-12-01 15:04:11

+0

兩種方式都不錯 – 2009-12-01 15:05:50

+1

這對於awk來說確實很簡單。 – 2009-12-01 15:14:27

回答

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

如果有任何增長或重新使用此過程的機會,我建議不要使用ReadAllLines路由,但是50K行可能會成爲內存管理員。 Mick Walker的解決方案將確保內存不一定被使用。 – 2009-12-01 15:23:17

+0

公平的評論,這確實不會擴展到非常大的文件,在這方面米克沃克有一個更好的解決方案。 – Oded 2009-12-01 16:01:27

0

去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); 
     } 
    } 
} 
+0

「Go go gadget REGEX!」 - 我愛的熱情:) – Basic 2009-12-01 15:08:01

+0

哈哈我也+1。 – 2009-12-01 16:13:13

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

+1 – 2009-12-01 15:12:25