簡體   English   中英

將正則表達式字符串添加到數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM