2017-01-13 61 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
namespace readfrom_textfile { 
    class Program { 
     static void Main(string[] args) { 
      var fileStream = new FileStream(@"D:\Practise\test.txt", FileMode.Open, FileAccess.Read); 
      using(var streamReader = new StreamReader(fileStream, Encoding.UTF8)) { 
       string line; 
       while ((line = streamReader.ReadLine()) != null) { 
        string[] data = line.Split(new char[] { 
         '(' 
        }, StringSplitOptions.RemoveEmptyEntries); 
        string bikeName = data[0].Trim().Split(' ').Last(); 
        bikeName = bikeName.Remove(bikeName.Length - 1); 
        string[] usageData = data[1].Split(new char[] { 
         ';' 
        }, StringSplitOptions.RemoveEmptyEntries); 
        string issuedBike = usageData[0].Trim().Split(' ')[2]; 
        string inUseBike = usageData[1].Trim().Split(' ')[2]; 
        Console.WriteLine("Name:" + bikeName); 
        Console.WriteLine("Total:" + issuedBike); 
        Console.WriteLine("InUse:" + inUseBike); 
        Console.WriteLine(); 
       } 

      } 
      Console.ReadLine(); 
     } 

在我的文本文件中的行是:如何解析c#中的文本文件?

雅馬哈的用戶:(2發出的自行車總數;在使用2自行車的合計).newline 一號線......... ........... something [newline] line2 .................. something [newline] Bike details // emptyline 1125 Monica YamahaR15 (v3.0)(汽油/ 7788 4903),開始週三1/18 8:53 1128 Dhini Yamaha Fz(v2.0)(汽油/ 7748 4903),開始週三1/18 9:53

This is the line.I want to get this line from my file and split into <pre> 
     Name: Yamaha; 
    Total: 1; 
    Inuse: 1; 
    members: Monica[Wed 1/18 8: 53], dhini[Wed 1/18 9: 53] < /pre> 
    Like this format. 
+1

該文件的實際內容看起來像什麼?添加至少兩條示例線 –

+0

雅馬哈用戶:(共發放1輛自行車;共使用1輛自行車);英雄用戶:(共發放6輛自行車;共使用2輛自行車); – monica

+0

線條是單線還是多線? –

回答

2

如果要存儲在txt文件等在nextline每個記錄(每1只記錄1行):

Users of Yamaha: (Total of 1 bike issued; Total of 1 bike in use) 
Users of Hero: (Total of 6 bike issued; Total of 2 bike in use) 

然後可以執行使用以下代碼也存儲在一個文件中的輸出。

public void Main(string[] args) 
{ 
    var fileStream = new FileStream(@"D:\Practise\test.txt", FileMode.Open, FileAccess.Read); 
    using (var streamReader = new StreamReader(fileStream, Encoding.UTF8)) 
    { 
     string line; 
     string createTextFile = ""; 
     string outputPath = @"D:\Practise\Output.txt"; 
     while ((line = streamReader.ReadLine()) != null) 
     { 
     string[] data = line.Split(new char[] { '(' }, StringSplitOptions.RemoveEmptyEntries); 
     string bikeName = data[0].Trim().Split(' ').Last(); 
     bikeName = bikeName.Remove(bikeName.Length - 1); 
     string[] usageData = data[1].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); 
     string issuedBike = usageData[0].Trim().Split(' ')[2]; 
     string inUseBike = usageData[1].Trim().Split(' ')[2]; 

     Console.WriteLine("Name:" + bikeName); 
     Console.WriteLine("Total:" + issuedBike); 
     Console.WriteLine("InUse:" + inUseBike); 
     Console.WriteLine(); 

     createTextFile += "Name:" + bikeName + Environment.NewLine; 
     createTextFile += "Total:" + issuedBike + Environment.NewLine; 
     createTextFile += "InUse:" + inUseBike + Environment.NewLine + Environment.NewLine; 
     } 
     File.WriteAllText(outputPath, createTextFile); 
    } 
    Console.ReadLine(); 
} 
+0

錯誤填充:索引超出了數組的範圍。 – monica

+0

在哪一行? –

+0

對不起它的工作正常.. :) :) :) – monica