如果行是制表符分隔的,这将即时读取 ipAddress、值和百分比
using(StreamReader reader = tsharkProcess.StandardOutput)
{
while (!reader.EndOfStream)
{
string[] values = reader.ReadLine().Split('\t');
if (values.Length == 4)
{
string ipAddress = values[0];
string value = values[1];
string percentage = values[3];
...
}
}
}
如果没有,那么可以使用 RegEx 来完成。
using(StreamReader reader = tsharkProcess.StandardOutput)
{
while (!reader.EndOfStream)
{
string row = reader.ReadLine();
string[] values = Regex.Split(row, @"\s+", RegexOptions.None);
if (values.Length == 4)
{
string ipAddress = values[0];
string value = values[1];
string percentage = values[3];
...
}
}
}
以及硬核 RegEx 解决方案。
public class MyClass
{
// Lots of code....
private static Regex regexRowExtract = new Regex(@"^\s*(?<ip>\d+\.\d+\.\d+\.\d+)\s*(?<value>\d+)\s+(?<rate>\d+\.?\d*)\s+(?<percentage>\d+\.?\d*)%\s*$", RegexOptions.Compiled);
public void ReadSharkData()
{
using(StreamReader reader = tsharkProcess.StandardOutput)
{
while (!reader.EndOfStream)
{
string row = reader.ReadLine();
Match match = regexRowExtract.Match(row);
if (match.Success)
{
string ipAddress = match.Groups["ip"].Value;
string value = match.Groups["value"].Value;
string percentage = match.Groups["percentage"].Value;
// Processing the extracted data ...
}
}
}
}
}
对于 Regex 解决方案,您应该使用:
using System.Text.RegularExpressions;