2013-10-27 178 views
0

我想知道如何從每行的文件中刪除一定數量的文本。從文本文件中刪除文本

我想不出一種完成這樣的任務的方法。

878  57 2 
882  63 1 
887  62 1 
1001 71 0 
1041 79 1 
1046 73 2 

這是文本文件的樣子,但我只想要左邊的數字。我無法手動右邊的2行,因爲有超過16,000行。

左邊的數字也改變了長度,所以我無法閱讀它們的長度。

我也不確定數字之間用什麼字符分隔,它可能是製表符。

任何人有什麼想法我可以嘗試?

如果你想看看文本文件,在這裏:http://pastebin.com/xyaCsc6W

回答

3
var query = File.ReadLines("input.txt") 
    .Where(x => char.IsDigit(x.FirstOrDefault())) 
    .Select(x => string.Join("", x.TakeWhile(char.IsDigit))); 

File.WriteAllLines("output.txt", query); 
+0

我不是這樣的C#太常見了,但希望在適當的時候,我將有回升這起來了。這工作完美,非常有效。 – Aidan

+0

如果您不知道這一點。僅供參考,這僅僅是Linq和Lambda表達。用這些關鍵字搜索 –

0
string line; 
using (var sr = new StreamReader(@"E:\test1.txt")) 
{ 
    using (var sw = new StreamWriter(@"E:\test1.tmp")) 
    { 
     while (!sr.EndOfStream) 
     { 
      line = sr.ReadLine(); 
      line = Regex.Match(line, @"([\d]*)").Groups[1].Value; 
      sw.WriteLine(line); 
     } 
    } 
} 
File.Replace(@"E:\test1.tmp", @"E:\test1.txt", null); 
0

你可以這樣做:

var col = 
from s in File.ReadAllLines(input_file_name); 
select s.Split(" ".ToCharArray())[0]; 

注:拆分(」「)我有一個空格和一個製表符。

0

你也可以做到這一點,這將給你的文本文件只有左(列)字符(數字/字母)的結果的列表:

var results = File.ReadAllLines("filename.txt") 
       .Select(line => line.Split('\t').First()) 
       .ToList(); 

它看起來像文本文件分隔通過標籤。

要保存結果列表返回到一個文本文件中添加除下列內容:

File.WriteAllLines("results.txt", results.ToArray()); 
0
 StringBuilder sb = new StringBuilder(); 
     //read the line by line of file.txt 
     using (StreamReader sr = new StreamReader("file.txt")) 
     { 
      String line; 
      // Read and display lines from the file until the end of 
      // the file is reached. 
      while ((line = sr.ReadLine()) != null) 
      { 
       //for each line identify the space 
       //cut the data from beginning of each line to where it finds space 
       string str = line.Substring(0, line.IndexOf(' ')); 

       //Append each modifed line into string builder object 
       sb.AppendLine(str); 

      } 
     } 

     //Create temp newfile 
     using (File.Create("newfile.txt")) 
     { 
      //create newfile to store the modified data 
     } 

     //Add modified data into newfile 
     File.WriteAllText("newfile.txt",sb.ToString()); 

     //Replace with new file 
     File.Replace("newfile.txt", "file.txt", null);