這如果行是製表符分隔
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];
...
}
}
}
如果沒有,那麼它可以使用正則表達式做會讀上飛的ip地址,值和百分比。
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 ...
}
}
}
}
}
對於正則表達式的解決方案,您應該使用:
using System.Text.RegularExpressions;
此選項卡分隔?如果是這樣,你可以分割'\ t'。 –
你真的需要最好的方式或任何方式就夠了嗎? –
我不認爲限制器是選項卡,我有什麼嘗試是3字典<字符串,雙>但它會是壞主意 – user1710944