テキストファイルに次のようなコンテンツがあります
ここで、「:」が含まれるすべてのコンテンツを、「モード」->「許可」、「ステータス」->「開始」などで分割したいと思います。BSSIDはこれから除外されます。
誰かが私がコンテンツを分割する方法について私を助けることができます、私は「:」に基づいてコンテンツを分割しようとしましたが、ホストされたネットワーク設定--------------とホストされたネットワークステータスを取得します- --------スプリットでも。
あなたのファイルを見て、私は「:」で分割して行ごとに読みます(スペースはIPv6アドレスを分割しない簡単な方法です)。次に、文字列を含む行のみを受け入れます。何かのようなもの:
from line in textFileLines.Where(x=>x.Contains(": "))
select x.Split(": ")
(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には2つの項目しかない場合、行には2つの列のみが追加されます。
@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);
}