带有ip地址和端口的C#微调字符串

本文关键字:字符串 ip 地址 带有 | 更新日期: 2023-09-27 18:10:19

可能重复:
c#中的字符串拆分

大家好,我正在从套接字获取连接的ip地址,它看起来像这样:>>"188.169.28.103:61635"我如何将ip地址放入一个字符串,并将端口放入另一个字符串?谢谢

带有ip地址和端口的C#微调字符串

就我个人而言,我会使用Substring:

int colonIndex = text.IndexOf(':');
if (colonIndex == -1)
{
    // Or whatever
    throw new ArgumentException("Invalid host:port format");
}
string host = text.Substring(0, colonIndex);
string port = text.Substring(colonIndex + 1);

Mark提到使用string.Split,这也是一个很好的选择,但你可能应该检查零件的数量:

string[] parts = s.Split(':');
if (parts.Length != 2)
{
    // Could be just one part, or more than 2...
    // throw an exception or whatever
}
string host = parts[0];
string port = parts[1];

或者,如果您对包含冒号的端口部分感到满意(就像我的Substring版本一样(,那么您可以使用:

// Split into at most two parts
string[] parts = s.Split(new char[] {':'}, 2);
if (parts.Length != 2)
{
    // This time it means there's no colon at all
    // throw an exception or whatever
}
string host = parts[0];
string port = parts[1];

另一种选择是使用正则表达式将这两个部分作为组进行匹配。老实说,我想说这在目前是过分的,但如果事情变得更加复杂,它可能会成为一个更具吸引力的选择。(我倾向于使用简单的字符串操作,直到事情变得越来越"模式化",在这一点上,我会忐忑不安地分解正则表达式。(

我会使用string.Split():

var parts = ip.Split(':');
string ipAddress = parts[0];
string port = parts[1];

尝试String.Split:

string[] parts = s.Split(':');

这将把IP地址放在parts[0]中,把端口放在parts[1]中。

string test = "188.169.28.103:61635";
string [] result  = test.Split(new char[]{':'});
string ip = result[0];
string port = result[1];