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

4

5 回答 5

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);
于 2013-10-27T08:02:40.600 回答
0

您也可以这样做,这将为您提供仅包含文本文件左侧(列)字符(数字/字母数字)的结果列表:

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

看起来文本文件由制表符分隔。

要将结果列表保存回文本文件,请另外添加以下内容:

 File.WriteAllLines("results.txt", results.ToArray());
于 2013-10-27T08:18:51.743 回答
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);
于 2013-10-27T08:08:54.067 回答
0

你可以这样做:

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

注意:在 Split(" ") 我有一个空格和一个制表符。

于 2013-10-27T08:12:38.527 回答
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);
于 2013-10-27T08:34:41.697 回答