如何从IP地址字符串中删除端口号

时间:2016-07-27 15:12:12

标签: c# .net string listbox

我正在尝试将IP与列表框中的端口分开。但我只留下端口号和":"我怎么会这样做":"被删除,只剩下IP。

ips看起来像这样:

192.168.0.12:80

192.168.0.2:123

192.168.0.3:1337

  for (int i = 0; i < lb.Items.Count; i++)
        {
            string item = lb.Items[i] as string;
            item = item.Substring(item.LastIndexOf(":"));
            lb.Items[i] = item;
        }

2 个答案:

答案 0 :(得分:3)

您可以将其解析为Uri,然后检查Host值:

String ip = "192.168.0.3:1337";
Uri uri = new Uri("http://" + ip);
MessageBox.Show(uri.Port.ToString()); //shows 1337
MessageBox.Show(uri.Host.ToString()); //shows 192.168.0.3

这样做的另一个好处是确保URI有效,并且适用于不包含:的地址,而使用IndexOf(':')则不会,因此您必须另外检查首先查看字符串.Contains

答案 1 :(得分:3)

您可以拆分字符串:

string ip = item.Split(":")[0]

或者您可以创建一个Uri对象并从中提取主机值