我的文字文件中有一个内容,如下所示
现在我想拆分所有内容中包含“:”的内容,例如Mode - > Allowed,Status - >开始等BSSID将免于此。
任何人都可以帮助我解决我将如何分割内容,我尝试基于“:”拆分内容但我得到托管网络设置--------------和托管网络状态----------也在分裂中。
答案 0 :(得分:2)
查看你的文件,我会逐行阅读,分成“:”(空格是不分割你的IPv6地址的简单方法)。然后只接受包含该字符串的行。类似的东西:
from line in textFileLines.Where(x=>x.Contains(": "))
select x.Split(": ")
答案 1 :(得分:0)
如果您有固定的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)将仅添加行中的列,因为它只有两个项目,然后该行将仅添加两列。
答案 2 :(得分: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);
}