0

我需要你的帮助。

问题是我的代码有效,它读取文件夹中的所有文件,这些文件是 96 个文本文件,并保存每个文件的路径。然后我获取每个文件并更改文本文件中的第 32 行,即 "Treatment";"1"; nr = 1,2,3,4,5,...,96。我的程序将采用这个字符串并将其替换为不同的字符串,例如我将第一个文件更改为 "Treatment";"100"; 那么最后一个文件应该是“Treatment”;“196”;

所以为了解决这个问题,我用一条新线改变了整条线。但是当我将数字写入字符串时,当我从 1 开始时,第一个文件是正确的,但文件 2-10 是正确的。12,23,34,45,56,67,78,89,然后从第 11 个文件开始 2,3,4,5,6,7。

为什么是这样?我的代码如下。

我尝试将整数保存为字符串,因为尽管我以某种方式访问​​了 ASCII 表。但这同样适用,所以我的代码低于任何想法?

    private void button1_Click(object sender, EventArgs e)
    {

        DialogResult result = folderBrowserDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {

            int start = 1;
            string strengur = "\";";
            string myString = start.ToString();

            string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
            //foreach (var file in Directory.EnumerateFiles(folderBrowserDialog1.SelectedPath))
            for(int i = 0; i < 96 ; i++){

                var lines = File.ReadAllLines(filePaths[i]);
                lines[31] = "\"Treatment!!\";\"" +myString +strengur;
                File.WriteAllLines(filePaths[i], lines);
                start += 1;
                myString = start.ToString();
           }
        }
  }

最好的问候 Sæþór Ólafur Pétursson

4

1 回答 1

1

在 Windows 资源管理器中显示所有这些文件,按名称排序,然后你会明白为什么。

要解决它,您可以start根据每个文件的line31当前编号设置您的,并添加100. 例如:

 private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = folderBrowserDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                string strengur = "\";";
                string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
                foreach(var file in filePaths)
                {
                    var lines = File.ReadAllLines(file);
                    int currentstart = int.Parse(lines[31].Split(';')[1].Trim('\"'));
                    lines[31] = "\"Treatment!!\";\"" + (currentstart+100).ToString() + strengur;
                    File.WriteAllLines(file, lines);
                }
            }
        }

根据您的评论进行编辑:

 private void button1_Click(object sender, EventArgs e)
    {
        DialogResult result = folderBrowserDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            int start = 100; //set this to your user's input
            string strengur = "\";";
            string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
            foreach(var file in filePaths)
            {
                var lines = File.ReadAllLines(file);
                int currentstart = int.Parse(lines[31].Split(';')[1].Trim('\"'));
                lines[31] = "\"Treatment!!\";\"" + (currentstart+start-1).ToString() + strengur;
                File.WriteAllLines(file, lines);
            }
        }
    }
于 2013-09-10T09:55:52.667 回答