C#读取,编辑,写入文件。

时间:2013-12-22 12:20:16

标签: c# visual-studio-2010

我有一个文本文件,用户通过OpenFileDialog上传到应用程序然后当文件打开时程序正在逐行读取它:

string[] data = File.ReadAllLines(file);

如何对每一行进行动态编辑,以便在第N个数字或字母后面放一个空格,然后将结果显示给用户而无需覆盖该文件,

例如:

如果我的文件包含:

0000000000BADBAD
2323040007BADAAD
4234420087BADBAC

显示应该是

0000000000  BADBAD
2323040007  BADAAD
4234420087  BADBAC

2 个答案:

答案 0 :(得分:1)

将所有行读入字符串数组data is isolated from your file i.e. any modification in data won't be reflected into your file后。你可以像任何其他对象一样操纵它。

操纵数据和实现结果的方法之一是:

foreach (string value in data)
{
    Console.WriteLine(value.Insert(10, " "));
}

答案 1 :(得分:0)

您可以查看您的行并使用Regex提取数据,例如:

string str = "0000000000BADBAD";

var match = Regex.Match(str, @"(?<Number>\d+)(?<Text>.*)");

var number = match.Groups["Number"].Value;
var text = match.Groups["Text"].Value;

string result = String.Format("{0} {1}", number, text);

在输出上写下result

另一种选择是使用Linq

string str = "0000000000BADBAD";
int n;

string number = String.Join("", str.TakeWhile(c => int.TryParse(c.ToString(), out n)));
string text = String.Join("", str.SkipWhile(c => int.TryParse(c.ToString(), out n)));

string result = String.Format("{0} {1}", number, text);