C#Regex快速帮助

时间:2010-01-22 16:17:08

标签: c#

我正在尝试读取一个文本文件,然后通过“\ 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行正则表达式。我必须逐行解析它。

2 个答案:

答案 0 :(得分:3)

File.ReadAllLines

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(...)
}

或者使用多行正则表达式一次性完成所有操作:)