将正则表达式字符串添加到数组

时间:2016-03-09 20:23:33

标签: c# arrays regex string

我需要在数组中添加一个正则表达式字符串,但是我得到一个类似&#34的错误;字符串不能在string []"中实现。

这是代码:

foreach (string ss in fileLines)
{
    filelinesclean = System.Text.RegularExpressions.Regex.Replace(ss, @"\s+", " ");
    MessageBox.Show("ok");
    System.IO.File.WriteAllLines(@"C:\Users\Public\WriteLines.txt", filelinesclean);
}

2 个答案:

答案 0 :(得分:4)

首先添加以下用法,这样您就不需要为所有内容输出整个命名空间。

using System.Text.RegularExpressions;
using System.IO;

它不起作用的原因是因为File.WriteAllLines需要IEnumerabl<string>string[],但您传递的是string。使用File.AppendAllText或在File.WriteAllLines之后拨打foreach一次。

var lines = new List<string>();
foreach (string ss in fileLines)
{
    lines.Add(Regex.Replace(ss, @"\s+", " "));
}
MessageBox.Show("ok");
File.WriteAllLines(@"C:\Users\Public\WriteLines.txt", lines);

或者喜欢使用Linq

File.WriteAllLines(
    @"C:\Users\Public\WriteLines.txt",
    fileLines.Select(ss => Regex.Replace(ss, @"\s+", " "));

但根据您的一些评论,您可能希望执行以下操作

File.WriteAllLines(
    @"C:\Users\Public\WriteLines.txt",
    File.ReadLines(@"InputPath")
        .Select(ss => Regex.Replace(ss, @"\s+", " "));

由于延迟初始化会一次一个地读入输入文件的每一行,所以执行正则表达式替换然后在移动到下一行之前写出行。如果你需要在一个非常大的文件上运行它,那将是可扩展的,因为它不需要整个文件一次在内存中。

答案 1 :(得分:0)

我不确定您的要求,但似乎您正在尝试使用字符串代替收集。这段代码可能有所帮助。

array

我保持您的代码不变,并添加/更新了几行。