我的文本文件中有一个内容,如下所示
现在我想拆分所有具有“:”的内容,例如 Mode-->Allowed、Status --> Started 等 BSSID 将被免除。
任何人都可以帮助我了解如何拆分内容,我尝试根据“:”拆分内容,但我得到了托管网络设置 -------------- 和托管网络状态 -- -------- 也在分裂中。
查看您的文件,我会逐行阅读,拆分“:”(空格是不拆分 IPv6 地址的简单方法)。然后只接受包含该字符串的行。就像是:
from line in textFileLines.Where(x=>x.Contains(": "))
select x.Split(": ")
我会选择@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);
}
如果您有像 (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 只有两个项目,然后该行将仅添加两列。