Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#文本阅读器和编写器_C#_Programming Languages - Fatal编程技术网

C#文本阅读器和编写器

C#文本阅读器和编写器,c#,programming-languages,C#,Programming Languages,我这里有一个文本文件,文本按列排列。我需要做的是读取文本文件,格式化它,使每列从一行开始。读取并格式化文件后,需要将其写入新文件。。。。我该怎么做呢 需要输入的文件如下所示: 操作员ID=BTA020 名称=亚洲商会 活动配置文件=用户\已禁用 启用状态=已禁用 重新启用日期=31/12/36 00:00:00 批准状态=已批准 最后更改日期=21/07/10 07:34:30 最后登录=13/06/08 14:09:37 计算的pwd=BD 一次性密码=否 指定单位=无 操作员ID=BTAC0

我这里有一个文本文件,文本按列排列。我需要做的是读取文本文件,格式化它,使每列从一行开始。读取并格式化文件后,需要将其写入新文件。。。。我该怎么做呢

需要输入的文件如下所示:

操作员ID=BTA020

名称=亚洲商会
活动配置文件=用户\已禁用
启用状态=已禁用
重新启用日期=31/12/36 00:00:00
批准状态=已批准
最后更改日期=21/07/10 07:34:30
最后登录=13/06/08 14:09:37
计算的pwd=BD
一次性密码=否
指定单位=无

操作员ID=BTAC002

名称=卡拉塔(NBC)
活动配置文件=用户\已禁用
启用状态=已禁用
重新启用日期=31/12/36 00:00:00
批准状态=已批准
最后更改日期=31/05/10 14:04:41
上次登录=不适用 计算的pwd=B9
一次性密码=否
指定单位=无

输出fie应如下所示:

操作员ID BTA020,名称ASIA CHAMBEGA,活动配置文件用户已禁用,启用状态已禁用,重新启用日期为2012年31月/ 操作员ID BTAC002,名称为Kalata(NBC),活动配置文件用户已禁用,启用状态已禁用

//等等,共有149条记录

如何使输出看起来像这样

谢谢
Tren

有关如何书写和阅读的基本信息,请阅读本文


像这样的东西应该可以做到:

using (TextReader textReader = ...)
using (TextWriter textWriter = ...)
{
    string line;

    while ((line = textReader.ReadLine()) != null)
    {
        // split into columns here
        string[] columns = ...;

        foreach (string column in columns)
        {
            textWriter.WriteLine(column);
        }
    }
}
请注意,您可能会使用LINQ将此代码收紧一点。

这是怎么回事:

string data = File.ReadAllText( path );
string[] lines = data.Split('\t'); //I assume that "columns" mean tab seperated
File.WriteAllLines( path2, lines );
或者您可以选择单行程序变体,但为了可读性,我更喜欢第一个:

File.WriteAllLines( destinationPath, File.ReadAllText( sourcePath ).Split('\t') );

你需要一个简单的转换器。只需读取完整的文件(在您的情况下它并不大,所以可以读入memmory)。当将“=”与“”和“\n”与“,”重放时。转化完成了!之后,生成的文本应写入新文件。就这些

代码应该是这样的:

        string t = File.ReadAllText(path);

        t = t.Replace('=', ' ');
        t = t.Replace("\r\n\r\n", ",");
        t = t.Replace("\r\n", ",");
        t = t.Replace("\n", ",");
        t = t.Replace("  ", " ");

列是如何表示的?他们是分开的吗?如果最初有
m
列和
n
行,您希望输出中有
m*n
行吗?好的,我已经编辑了这个问题,现在您可以清楚地看到我在处理什么,以及输出需要是什么样子。您正在为“每行包含多个列”的情况提供解决方案,但有人询问过“每列从新行开始“我不同意,安东。这更像是输入文件中的一行包含多个列,而输出应该是每列一行。@Matten。根据示例,它提供了一些关于ini文件的信息,但更复杂。每一行实际上只包含一列我的答案是在编辑之前用我仅有的一点信息提供的。首先非常感谢你的帮助,代码工作得很好,但格式仍然不是100%。它看起来如下:BTA020,ASIA CHAMBEGA活动配置文件,用户_DisabledOK,i FEX代码。这个修订应该可以正常工作。它不优雅,但简单实用)