为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串附加到文本文件的特定位置

将字符串附加到文本文件的特定位置

C#
慕莱坞森 2023-09-16 17:01:06
我的目录中有数百个文件。许多文本文件的代码列值为空白,我需要迭代所有文本文件并填充它。我可以编写代码以在新行中添加代码值,但无法在代码列下编写它。字符串值为:“STRINGTOENTER”。我只想将其输入到标题后的第一行中。最后一行应该保留 Id    Code    File_Number   Suffix  Check_Number    Check_Date047           7699      01          99999       11/11/20121   -6.15下面是我在换行符处添加值的代码片段。我想我需要在这里做一个正则表达式或制表符分隔类型的解决方案。 public static void AddAStringtoAllTextFiles()    {        try        {            string path = @"C:\Users\ur\Desktop\TestFiles\";            string[] fileEntries = Directory.GetFiles(path);            for (int i = 0; i < fileEntries.Length; i++)            {                File.AppendAllText(fileEntries[i], "STRINGTOENTER" + Environment.NewLine);           }        }        catch (Exception e)        {            throw e;        }    }
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

编辑 请尝试此假设其空格分隔。


它在我的 VS2017 上工作,请在顶部添加 using 语句,如下所示。


 using System.Text.RegularExpressions


    public static void AddAStringtoAllTextFiles()

    {

        try

        {

            string path = @"C:\Users\ur\Desktop\TestFiles\";

            var fileEntries = Directory.GetFiles(path);

            int indexPosition2InsertData=1;

            foreach (var entry in fileEntries)

            {

                var lines = File.ReadAllLines(entry);

                for (var index = 1; index < lines.Length; index++) //starting  from first row, leaving the header

                {

                    var split= Regex.Split(lines[index].Trim(), @"\s{1,}"); //reading the line with space(s)

                    if(split.Length==5) //edited //checking if the row is not blank

                    {

                        var list = split.ToList(); //convert to list to insert

                        list.Insert(indexPosition2InsertData, "STRINGTOENTER"); //inserting at the index 1

                        lines[index] = string.Join("\t", list);

                    }

                }

                File.WriteAllLines(entry, lines);

            }

        }


        catch (Exception e)

        {

            throw e;

        }

    }

运行代码后我得到了这个。


Id    Code    File_Number   Suffix  Check_Number    Check_Date


047 STRINGTOENTER   7699    01  99999   11/11/2012

1   -6.15

请让我知道这可不可以帮你。


查看完整回答
反对 回复 2023-09-16
?
当年话下

TA贡献1890条经验 获得超9个赞

假设每个文件都有正确的制表符分隔(考虑到问题质量,这是一个很大的假设)


// Get the files

var fileEntries = Directory.GetFiles(path);


// iterate through each file name

foreach (var entry in fileEntries)

{


  // Load the File into the lines array

  var lines = File.ReadAllLines(entry);


  // Iterate over each line

  if(lines.Length >1)

  {

     // Split the lines by tab

     var split = lines[1].Split('\t');

     // your code should be at array index 1

     split[1] = "STRINGTOENTER";

     // write the whole line back

     lines[1] = string.Join("\t", split);


     // write the file

     File.WriteAllLines(entry, lines);

  }


}

注意:您可能应该使用 CSV 解析器来执行此操作,这仅用于学术目的并且完全未经测试


查看完整回答
反对 回复 2023-09-16
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我想根据您的输入展示我想要的解决方案。令人惊奇的是,一段简单的代码可以帮助解决更大、更复杂的问题。再次感谢!


     public static void AddClientCodetoAllTextFiles(string update_batch_with_clientcode, string batchfilepathtobeupdated)

    {      


        try

        {

            var fileEntries = Directory.GetFiles(@batchfilepathtobeupdated.Trim());


            foreach (var entry in fileEntries)

            {

                var lines = File.ReadAllLines(entry);


                if (lines.Length > 1)

                {

                    for (int i = 1; i < lines.Length - 1; i++)

                    {

                        var split = lines[i].Split('\t');

                        split[1] = update_batch_with_clientcode.Trim();

                        lines[i] = string.Join("\t", split);


                        File.WriteAllLines(entry, lines);

                    }


                }


            }


        }


        catch (Exception e)

        {

            throw e;

        }

    }


查看完整回答
反对 回复 2023-09-16
  • 3 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信