簡體   English   中英

如何從CSV文件中刪除所需的字符串

[英]how to delete required string from csv file

大家好,嘗試在某些csv文件中刪除行; 文件示例:

24 august 2013 г.,,14:00,00:00,;
24 august 2013 г.,,14:00,00:00,;
24 august 2013 г.,2342,14:00,00:00,23424;
24 august 2013 г.,2342,14:00,19:00,23424;

criteria - 24 august 2013 г.,2342

結果一定像

 24 august 2013 г.,,14:00,00:00,;
 24 august 2013 г.,,14:00,00:00,;

我的想法打開文件-

FileStream fs = new FileStream(filePath, FileMode.Open, 
            FileAccess.ReadWrite);
        StreamReader sr = new StreamReader(fs);

獲取所有數據到數組

        string lines = sr.ReadToEnd();
        string []result = lines.Split(';');

比獲取刪除數據的標准(某些字符串)

        string criteria = dateTimePicker1.Text.ToString()+','
            +eventNameDeleteTextBox.Text.ToString();
sr.Close();

在數組中搜索

             int startStr = lines.IndexOf(criteria);//find start position
        int length = lines.IndexOf(';',startStr)-startStr;//find end position

刪除字符串dataRemoved = lines.Substring(startStr,length); viewTextBox.Text = dataRemoved;

並寫入文件更新的數據

    FileStream fs1 = new FileStream(filePath, FileMode.Open,
                FileAccess.Write, FileShare.None);
        StreamWriter sw = new StreamWriter(fs1);

        sw.WriteLine(dataRemoved);
        sw.Close();

但是它無法正常工作-它必須將復制字符串刪除到文件的開頭並刪除所有; 符號,我錯在哪里?

嘗試類似的方法,如果您的文件很小,那么下面的解決方案應該不是問題。

string rawdata = @"24 august 2013 г.,,14:00,00:00,;
24 august 2013 г.,,14:00,00:00,;
24 august 2013 г.,2342,14:00,00:00,23424;
24 august 2013 г.,2342,14:00,19:00,23424;";//consider this is raw file

string[] lines = rawdata.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

List<string> result = new List<string>();
foreach (var line in lines)
{
    if (!line.Contains("24 august 2013 г.,2342"))
    {
        result.Add(line);
    }
}

現在,您的預期結果將出現在result列表中。 您可以使用結果列表創建一個新文件。

如果這不能回答您的問題,請提供更多信息。 我會嘗試提供更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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