如何读取特定行中的数字并增加1

时间:2013-12-03 11:46:06

标签: c#

我正在尝试编写一个可以增加.ini文件中行数的程序。 文件看起来像这样(不是完整的文件):

[IndexFile]

;*** DATABASE FILES ***
FileSpec_1=C:\Solid4.2\solid.1 1000m
FileSpec_2=C:\Solid4.2\solid.2 1000m
FileSpec_3=C:\Solid4.2\solid.3 1000m
;
; SOLID uses by default 'solid.db' as the first database file,

我希望我的程序读取文件中包含“FileSpec”的行数,并询问用户他/她总共需要多少行。用户输入量ex:8。然后程序将另外五行写入文件。

这是我到目前为止所做的:

int count = File.ReadLines(filepath).Skip(16).Count(line => line.Contains("FileSpec"));
Console.WriteLine(("There are ") + (count) + (" Filespec-lines in the file, how many do you want in total?"));
int antall22=(int)Convert.ToInt32(Console.ReadLine());

int linestoadd = antall22 - count;

因此,“linestoadd”是应该写入文件的行数。 如何在文件中写入行数并增加下划线后的数字,使其增加到两个(10+)和三个(100+)个数字?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

var lines = new List<string>();
for(int i=count+1; i<= antall22; i++)
{
     lines.Add(string.Format("FileSpec_{0}=C:\Solid4.2\solid.{0} 1000m",i));
}
File.AppendAllLines(filepath,lines);
输入

将为您的文件添加5行:

FileSpec_4=C:\Solid4.2\solid.4 1000m
FileSpec_5=C:\Solid4.2\solid.5 1000m
FileSpec_6=C:\Solid4.2\solid.6 1000m
FileSpec_7=C:\Solid4.2\solid.7 1000m
FileSpec_8=C:\Solid4.2\solid.8 1000m

它将始终在FileSpec_{number}中添加连续数字,即使它们的长度是多位数

阐释:

for(int i=count+1; i<= antall22; i++)

表示最初i = count + 1&lt; - 下一行数,并将继续antall22 1(i ++)。在每次迭代中i都是count+1+numberofiteration,所以它将是:

  

第一次迭代:i = 4

     

第二次迭代:i = 5

     

等......