行がタブ区切りの場合、これにより、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];
...
}
}
}
そして、ハードコア正規表現ソリューション.
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 ...
}
}
}
}
}
正規表現ソリューションの場合、次を使用する必要があります。
using System.Text.RegularExpressions;