1
我所分析的數據當前存儲到一個StringBuilder,我想將它解析爲我的班級名單:將字符串/字符串生成器解析到類中,我該如何去解決它?
StringBuilder data = new StringBuilder(length);
所以,我有我的類分配給一個列表:
public class Messages
{
public DateTime Sent { get; set; }
public string User {get; set; }
public MessageType TypeUsed { get; set; }
public string Message { get; set; }
}
public enum MessageType
{
System,
Info,
Warn
}
public List<Messages> myList = new List<Messages>();
現在,這裏有一些消息的樣品,我需要解析:
[13:49:13] [System Message] <Username> has openned blocked website
[13:49:14] <Username> accessed file X
[13:52:46] [System Message] <Username> has entered this room
[13:52:49] [System Message] <Username> has left this room
我在這裏的疑問是什麼會是分析它的最佳方式。
時間出現在所有消息中。 Usernaem始終與<>
當沒有[System Message]
或[Warn Message]
它是一個信息類型消息。 消息是休息例子:
has left this room
accessed file X
has openned blocked website
現在這裏是我還在想用什麼。
我可以使用正則表達式來提取每個字符串是這樣的:
Regex getData = new Regex(@"^\[(\d{1,2}:\d{1,2}:\d{1,2})\] \[([A-Za-z]+)\] ");
但後來我就basicly需要爲每個消息幾項檢查,所以我不這麼舒適。
因子評分關於採用分體式例如:
string line = item.Replace("[", "").Replace("]", "");
string[] fields = line.Split(' ');
,然後我會檢查分裂的情況下很容易檢測的消息類型,但不那麼可靠,我認爲。
我想提出一些建議和想法,告訴我如何配合這一點?
也許我只是過於複雜的邏輯:/
+1以及詳細的,這聽起來很酷我最初考慮使用正則表達式,但然後,我就在案件stucked當它沒有[System *]信息時,我會檢查你的示例謝謝。 – Prix 2011-05-25 17:58:22
@Prix:爲了方便,我添加了一些示例代碼,請查看它。 – Jon 2011-05-25 18:00:29
非常感謝這個例子;) – Prix 2011-05-25 18:13:26