如何separate/filter输出一个字符串,将分离出来的数据写入不同的文本框?
how to separate/filter an output string and write the separated data into different text boxes?
所以我有一个按钮和两个文本框。
我想点击一个按钮,它会执行 nslookup 然后我想:
-write the resolved hostname into one text box
-write the resolved ip adress into next text box
到目前为止我有这个
System.Diagnostics.Process p = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "nslookup.exe";
psi.Arguments = "google.com";
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = false;
p.StartInfo = psi;
p.Start();
p.WaitForExit();
System.IO.StreamReader output = p.StandardOutput;
textbox1.Text = output.ReadToEnd().ToString();
所以现在它进行解析并将所有内容写入一个字符串。
我如何过滤输出字符串并将字符串的特定部分写入单独的框中?
示例输出字符串将是:(这是一个单行字符串,但为了便于理解,我将其写在 table 中)
Server: EXAMPLE //this i dont need
Address: EXAMPLE //this i dont need
Name: google.com //i need this to be written to TextBox1
Address: 172.217.21.206 //i need this to be written to TextBox2
所以说到底:
Textbox.Text = "google.com"
Textbox2.Text = "172.217.21.206"
稍后我想 ping textbox2 中的 ip 并使文本框在可访问时改变颜色,如果它可访问,则 rdp 连接到该 ip 的按钮,所以我需要它没有任何 spaces 只是一个字符串
我正在考虑将每个由 space 分隔的单词写入一个数组,然后读取该数组并将匹配的内容写入框中,如下所示:
string[] words = outputstring.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
但在我继续之前我想问一下是否有更简单快捷的方法来做这件事,我一起走错了方向?也许有一种方法可以从 nslookup 命令中提取 return 特定参数?
正则表达式可以帮到你。以下是检索名称的方法,地址与此类似:
Regex.Match(text, @"Name: *(?<name>[^ ]+)").Groups["name"].Value
您可以使用 Dns.GetHostEntry 而不是手动调用外部进程:
IPHostEntry hostInfo = Dns.GetHostEntry("example.com");
textbox1.Text = hostInfo.HostName;
textbox2.Text = hostInfo.AddressList[yourIndex].ToString();
所以我有一个按钮和两个文本框。 我想点击一个按钮,它会执行 nslookup 然后我想:
-write the resolved hostname into one text box
-write the resolved ip adress into next text box
到目前为止我有这个
System.Diagnostics.Process p = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "nslookup.exe";
psi.Arguments = "google.com";
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = false;
p.StartInfo = psi;
p.Start();
p.WaitForExit();
System.IO.StreamReader output = p.StandardOutput;
textbox1.Text = output.ReadToEnd().ToString();
所以现在它进行解析并将所有内容写入一个字符串。 我如何过滤输出字符串并将字符串的特定部分写入单独的框中?
示例输出字符串将是:(这是一个单行字符串,但为了便于理解,我将其写在 table 中)
Server: EXAMPLE //this i dont need
Address: EXAMPLE //this i dont need
Name: google.com //i need this to be written to TextBox1
Address: 172.217.21.206 //i need this to be written to TextBox2
所以说到底:
Textbox.Text = "google.com"
Textbox2.Text = "172.217.21.206"
稍后我想 ping textbox2 中的 ip 并使文本框在可访问时改变颜色,如果它可访问,则 rdp 连接到该 ip 的按钮,所以我需要它没有任何 spaces 只是一个字符串
我正在考虑将每个由 space 分隔的单词写入一个数组,然后读取该数组并将匹配的内容写入框中,如下所示:
string[] words = outputstring.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
但在我继续之前我想问一下是否有更简单快捷的方法来做这件事,我一起走错了方向?也许有一种方法可以从 nslookup 命令中提取 return 特定参数?
正则表达式可以帮到你。以下是检索名称的方法,地址与此类似:
Regex.Match(text, @"Name: *(?<name>[^ ]+)").Groups["name"].Value
您可以使用 Dns.GetHostEntry 而不是手动调用外部进程:
IPHostEntry hostInfo = Dns.GetHostEntry("example.com");
textbox1.Text = hostInfo.HostName;
textbox2.Text = hostInfo.AddressList[yourIndex].ToString();