如何读取文件一行中的内容.txt

本文关键字:txt 一行 何读取 读取 文件 | 更新日期: 2023-09-27 17:56:35

我有这样一行:

114765 * 3 * 659300 * 01 * 17/01/2013 * * 1 * Chuck Norris * Chuck Norris Jr* Owner * 1 * 28/04/1983 * Conjuge * * * 16/1/2013 * 1 * Quadro Social *

如您所见,内容/字段由*分隔,它们是matriculation, name, dependent's name, category等字段......我想知道我怎样才能一个接一个地"阅读"它?

我还需要重新排序并编写一个新文件.txt,这些内容重新排序并且没有*......我完全迷路了!
在我阅读并删除*后,我需要像'field'一样替换它们: '114765''3''659300''01''17/01/2013''1''Chuck Norris'我尝试了substring()StreamWriter StreamReader ReadLine但我无法做我需要的;''

如何读取文件一行中的内容.txt

使用 String.Split 获取列的string[]。您可以使用 String.Join 将所有部分连接在一起到一个新字符串中,并File.WriteAlltextFile.WriteAllLines将其写回。

阅读并删除 * 后,我需要像 ''field'' 一样替换它们:

所以你需要用'替换*

string[] parts = line.Split(new[] { '*' }, StringSplitOptions.RemoveEmptyEntries);
string newLine = string.Join("", parts.Select(p => string.Format("''{0}''", p.Trim())));
File.WriteAllText(filePath, newLine);

演示

结果:

'114765''3''659300''01''17/01/2013''''1''Chuck Norris''Chuck Norris Jr''Owner''1''28/04/1983''Conjuge''''''16/1/2013''1''Quadro Social'''

更新

如果要忽略空的部分(由字符串中的两个连续* *引起),则可以使用以下代码:

var nonEmptyParts = parts
    .Where(p => !string.IsNullOrWhiteSpace(p))
    .Select(p => string.Format("''{0}''", p.Trim()));
string newLine = string.Join("", nonEmptyParts);

这将导致:

'114765''3''659300''01''17/01/2013''1''Chuck Norris''Chuck Norris Jr''Owner''1''28/04/1983''Conjuge''16/1/2013''1''Quadro Social'

我想忽略数组的前 2 个字符串,你知道的只是 取下它,扔掉它

那就是Enumerable.Skip

var nonEmptyParts = parts.Skip(2)
    .Where(p => !string.IsNullOrWhiteSpace(p))
    .Select(p => string.Format("''{0}''", p.Trim()));

readline 是您需要从文本文件中读取一行的内容。 将整行包含在字符串中后,使用 Split 方法。

line.Split('*');

会给你一个字符串数组。

如何重新排序文件中的行?只需将字段到排序依据的值更改为按其他数值字段排序即可。

using System.IO;
using System.Linq;
namespace FileSorter
{
    class Program
    {
        static void Main(string[] args)
        {
            var fieldToSortBy = 0;
            //data.txt contains lines like 114765 * 3 * 659300 * 01 * 17/01/2013 * * 1 * Chuck Norris * Chuck Norris Jr* Owner * 1 * 28/04/1983 * Conjuge * * * 16/1/2013 * 1 * Quadro Social *
            var lines = File.ReadAllLines(@"C:'temp'data.txt");
            var splitLines = lines.Select(l => l.Split('*'));
            var orderedLines = splitLines.OrderByDescending(l => int.Parse(l[fieldToSortBy].Trim()));
            var joinedLines = orderedLines.Select(l => string.Join("*", l));
            File.WriteAllLines(@"C:'temp'output.txt", joinedLines);
        }
    }
}
一次

读取一行文件,然后使用

myLine.split('*');

这会将字符串分成一个数组,在有"*"的地方拆分它。有关更多详细信息,请参阅 http://msdn.microsoft.com/en-us/library/y7h14879.aspx。

当您想将其写回另一个文件时,您应该能够根据需要排列数组中的项目并使用 StreamWriter 写入它们,确保传入新文件名。有关示例,请参阅 http://www.dotnetperls.com/streamwriter。