我正在尝试读取一个文本文件,然后通过“\ n”分割的每一行将其分解。然后Regex它并写出正则表达式。
string contents = File.ReadAllText(filename);
string[] firefox = filename.Split("\r\n");
string prefix = prefix = Regex.Match(firefox, @"(\d)").Groups[0].Value;
File.AppendAllText(workingdirform2 + "configuration.txt", prefix);
string [] firefox = filename.Split(“\ r \ n”);并不完全有效。
我想要做的是运行正则表达式foreach内容,然后在正则表达式之后写出每一行
因此...
文件名:
Hero123
Hero243
Hero5959
写出:
13个
243个
5959
每个人都在建议我开始的基础。最终结果将与Ints大约20行正则表达式。我必须逐行解析它。
答案 0 :(得分:3)
var lines = File.ReadAllLines(originalPath);
File.WriteAllLines(newPath, lines
.Select(l => Regex.Match(l, @"\d+").Value).ToArray());
答案 1 :(得分:1)
您的代码存在许多问题:
分割不起作用的原因是因为您要分割filename
,而不是contents
,其中包含实际的文件数据。我同意使用File.ReadAllLines :)的另一张海报。与使用\r\n
相比,文件格式更灵活一些。
此外,您有string prefix = prefix = ...
,第二个等号可能是+
。您应该使用StringBuilder如果数据文件可能变大,或者更好,则可以随时写入输出流。
将数组传递给Regex.Match
也不起作用。要将正则表达式应用于所有行,您应该执行以下操作:
foreach (string line in firefox)
{
prefix = prefix + Regex.Match(line, // etc
// Or rather:
// stringBuilder.AppendLine(...)
}
或者使用多行正则表达式一次性完成所有操作:)