我不會用正則表達式(或String.Split)對於這一點,但在這裏你分析每一行的循環。我還會使用自定義類映射到數據庫表以增加可重用性和可重用性。
類(簡體):
public class Data
{
public string Token1 { get; set; } // use a meaningful name
public string Token2 { get; set; } // use a meaningful name
public DateTime Date { get; set; } // use a meaningful name
public override string ToString()
{
return string.Format("Token1:[{0}] Date:[{1}] Token2:[{2}]",
Token1,
Date.ToString("MM/dd/yy HH:mm:ss", CultureInfo.InvariantCulture),
Token2);
}
}
您的樣本字符串:
:
string data = @"rta_geo5: 09/24/14 15:10:38 - Reset_count = 6
rta_geo5: 09/24/14 15:10:38 - restarting
rta_geo5: 09/24/14 15:10:38 - memory allocation: 3500 lines";
現在你可以使用普通字符串的方法來解析文本到List<Data>
使用這個循環
string[] lines = data.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
List<Data> allData = new List<Data>();
foreach (string line in lines)
{
string token1 = null, token2 = null;
DateTime dt;
int firstColonIndex = line.IndexOf(": ");
if (firstColonIndex >= 0)
{
token1 = line.Remove(firstColonIndex);
firstColonIndex += 2; // start next search after first token to find DateTime
int indexOfMinus = line.IndexOf(" - ", firstColonIndex);
if (indexOfMinus >= 0)
{
string datePart = line.Substring(firstColonIndex, indexOfMinus - firstColonIndex);
if (DateTime.TryParseExact(datePart, "MM/dd/yy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
indexOfMinus += 3; // start next search after DateTime to get last token
token2 = line.Substring(indexOfMinus);
Data d = new Data { Token1 = token1, Token2 = token2, Date = dt };
allData.Add(d);
}
}
}
}
測試:
foreach (Data d in allData)
Console.WriteLine(d.ToString());
Token1:[rta_geo5] Date:[09/24/14 15:10:38] Token2:[Reset_count = 6]
Token1:[rta_geo5] Date:[09/24/14 15:10:38] Token2:[restarting]
Token1:[rta_geo5] Date:[09/24/14 15:10:38] Token2:[memory allocation: 3500 lines]
此方法比其他方法更詳細但更有效/可維護。它還允許記錄異常或使用其他方法解析它。
您是否試圖自己構建模式?它是如何去的? – Utkanos 2014-09-25 11:19:16
你想如何區分'rta_geo5:'和'allocation:'?你想用什麼嚴格的規則來拆分? – 2014-09-25 11:30:52
這看起來可能是固定的寬度。如果是這樣,我個人只是拔出所需的子串。 – juharr 2014-09-25 11:47:37