繁体   English   中英

从c#中的文本文件中拆分文本

[英]Splitting text from text file in c#

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

在此输入图像描述

现在我想拆分所有具有“:”的内容,如模式 - >允许,状态 - >开始等BSSID是免除此。

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

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

from line in textFileLines.Where(x=>x.Contains(": "))
select x.Split(": ")

如果您有固定的lenth列(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只有两个项目,然后该行将仅添加两列。

我会用@ 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM