我需要在数组中添加一个正则表达式字符串,但是我得到一个类似&#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);
}
答案 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
我保持您的代码不变,并添加/更新了几行。