我有要在表单中显示的列表。但首先,我想移动所有不相关的部分。这是我的清单:
===================================================================
Protocol Hierarchy Statistics
Filter:
eth frames:8753 bytes:6185473
ip frames:8753 bytes:6185473
tcp frames:8661 bytes:6166313
http frames:1230 bytes:792126
data-text-lines frames:114 bytes:82636
tcp.segments frames:56 bytes:41270
image-gif frames:174 bytes:109968
tcp.segments frames:57 bytes:37479
image-jfif frames:195 bytes:154407
tcp.segments frames:185 bytes:142340
png frames:35 bytes:30521
tcp.segments frames:20 bytes:15770
media frames:39 bytes:32514
tcp.segments frames:32 bytes:24755
tcp.segments frames:6 bytes:1801
xml frames:5 bytes:3061
tcp.segments frames:1 bytes:960
ssl frames:20 bytes:14610
udp frames:92 bytes:19160
dns frames:92 bytes:19160
===================================================================
我想显示第一列(协议类型),而在第二列中只显示“frames:”之后没有字节的部分:xxxx
答案 0 :(得分:1)
可能使用正则表达式,类似于:
Regex rgx = new Regex(@"^(?<protocol>[ a-zA-Z0-9\-\.]*)frames:(?<frameCount>[0-9]).*$");
foreach (Match match in rgx.Matches(myListOfProtocolsAsAString))
{
if(match.Success)
{
string protocol = match.Groups[1].Value;
int byteCount = Int32.Parse(match.Groups[2].Value);
}
}
然后您可以访问Match实例上的匹配组(protocol&amp; framecount)。
答案 1 :(得分:1)
使用流行的Linq to Objects
var lines = new string[]
{
"eth frames:8753 bytes:6185473",
"ip frames:8753 bytes:6185473"
};
var values = lines.Select(
line=>line.Split(new string[]{"frames:", "bytes:"}, StringSplitOptions.None))
.Select (items => new {Name=items[0].Trim(), Value=items[1].Trim()});