0

我的文本文件中有一个内容,如下所示

在此处输入图像描述

现在我想拆分所有具有“:”的内容,例如 Mode-->Allowed、Status --> Started 等 BSSID 将被免除。

任何人都可以帮助我了解如何拆分内容,我尝试根据“:”拆分内容,但我得到了托管网络设置 -------------- 和托管网络状态 -- -------- 也在分裂中。

4

3 回答 3

2

查看您的文件,我会逐行阅读,拆分“:”(空格是不拆分 IPv6 地址的简单方法)。然后只接受包含该字符串的行。就像是:

from line in textFileLines.Where(x=>x.Contains(": "))
select x.Split(": ")
于 2012-07-10T12:02:52.727 回答
0

我会选择@lc.的答案,但如果您需要更多自定义逻辑的东西,试试这个:

var keyValue = new Dictionary<string, string>();
foreach (var lineItem in System.IO.File.ReadAllLines(@"C:\Users\Kane\Desktop\yourFile.txt").Where(x => x.Contains(": ")))
{
    var splitPosition = lineItem.IndexOf(": ", System.StringComparison.OrdinalIgnoreCase);
    var key = lineItem.Substring(0, splitPosition);
    var value = lineItem.Substring(splitPosition + 1);

    // add in functions for checking null
    // add in functions for trimming
    // add in special cases for 
    keyValue.Add(key, value);
}
于 2012-07-10T12:12:37.123 回答
0

如果您有像 (x, y) 一样的固定长度列,那么我认为这是阅读文本文件的更合适的方式

   public DataTable GetDataTableFromTextFile(string filepath) 
    {
                                string line;
                                DataTable dt = new DataTable();                         
                                using (TextReader tr = File.OpenText(filepath))
                                {
                                    while ((line = tr.ReadLine()) != null)
                                    {
                                        string[] items = line.Split('\t',":",";","=");
                                        if (dt.Columns.Count == 0)
                                        {
                                            dt.Columns.Add(new DataColumn("FirstColumn", typeof(string)));
                                            dt.Columns.Add(new DataColumn("SecondColumn", typeof(string)));
                                            dt.Columns.Add(new DataColumn("ThridColumn", typeof(string)));

                                        }

                                        if (items.Length > 0 && !string.IsNullOrWhiteSpace(items[0].ToString()))
                                        {
                                            dt.Rows.Add(items);                                       
                                        }
                                    }
                                }
    return dt;

}

完全希望这对您有所帮助。

您可以根据需要添加列。并且 dt.rows.add(item) 将仅在行中添加列,因为它具有例如 item 只有两个项目,然后该行将仅添加两列。

于 2012-07-10T12:08:29.023 回答