[英]Add regex string to array
我需要將正則表達式字符串添加到數組中,但是出現類似“字符串無法在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);
}
首先添加以下用法,這樣您就無需為所有內容輸入整個名稱空間。
using System.Text.RegularExpressions;
using System.IO;
它不起作用的原因是因為File.WriteAllLines
需要IEnumerabl<string>
或string[]
,但是您正在傳遞string
。 可以使用File.AppendAllText
或在這樣的foreach
之后僅調用File.WriteAllLines
一次。
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+", " "));
由於惰性初始化會一次讀取輸入文件的每一行,因此請進行正則表達式替換,然后在移至下一行之前將其寫出。 如果您需要在一個非常大的文件上運行此文件,那么它將是可伸縮的,因為它不需要一次將整個文件都存儲在內存中。
我不確定您的要求,但似乎您正在嘗試使用字符串代替collection。 此代碼可能會有所幫助。
List<string> lines = new List<string>();
foreach (string ss in fileLines)
{
string filelinesclean = System.Text.RegularExpressions.Regex.Replace(ss, @"\s+", " ");
lines.Add(filelinesclean);
}
System.IO.File.WriteAllLines(@"C:\Users\Public\WriteLines.txt", lines);
我將您的代碼保持原樣,並添加/更新了幾行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.