我收到了以下文本形式的警报
NE=JKHGDUWJ3 Alarm=Data Center STALZ AC Failure Occurrence=2012/4/3 22:18:19 GMT+02:00 Clearance=Details=Cabinet No.=0, Subrack No.=40, Slot No.=0, Port No.=5, Board Type=EDS, Site No.=49, Site Type=HSJYG500 GSM, Site Name=Google1 .
我需要将其填充到 csv 文件中,以便稍后我可以执行一些分析
我想出了这个
if (!File.Exists(filesName)) {
string header = "NE,Alarm,Occurrence,Clearance,Details";
File.AppendAllText(filesName,header+Environment.NewLine);
}
StringBuilder sb = new StringBuilder();
string line = textBoxAlarm.Text;
int index = line.IndexOf(" ");
while (index > 0) {
string token = line.Substring(0, index).Trim();
line = line.Remove(0, index + 2);
string[] values = token.Split('=');
if (values.Length ==2) {
sb.Append(values[1] + ",");
} else {
if (values.Length % 2 == 0) {
string v = token
.Remove(0, values[0].Length + 1)
.Replace(',', ';');
sb.Append(v + ",");
} else {
sb.Append("********" + ",");
string v = token
.Remove(0, values[0].Length + 1 + values[1].Length + 1)
.Replace(',', ';');
sb.Append(v + ",");
}
}
index = line.IndexOf(" ");
}
File.AppendAllText(filesName, sb.ToString() + Environment.NewLine);
结果正如我想要的,除了当我到达
的部分时Details=Cabinet No.=0, Subrack No.=40, Slot No.=0,
Port No.=5, Board Type=KDL, Site No.=49, Site Type=JDKJH99 GSM, Site Name=Google1 .
我无法将它们分成单独的字段。
结果显示如下
我想拆分详细信息,我希望详细信息中的每个元素都位于一列中
变得像
这真的很烦人:-)
请帮忙,先谢谢了
最佳答案
此行之后:
string v = token.Remove(0, values[0].Length + 1 + values[1].Length + 1).Replace(',', ';')
做:
var detailParts = v.Split(";".ToCharArray());
现在填写详细部分。并将它们附加到sb
,为了填充详细部分,您需要执行类似的操作。
detailPart[i].Split("=".ToCharArrray())[1]
关于c# - 写入csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037414/