如何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();