Добавить протокол к строке или разбить его самостоятельно, используя пользовательский метод:
static readonly char[] s_splitter = new char[1] { ':' };
static int GetPort(string s)
{
int port = -1;
if (string.IsNullOrEmpty(s))
return port;
string[] parts = s.Split(s_splitter);
if (parts.Length == 2)
int.TryParse(parts[1], out port);
return port;
}
Если вы используете .NET Core или System.Memory NuGet, вы можете получить порт без выделения дополнительных строк:
static int GetPort(string s)
{
int port = -1;
if (string.IsNullOrEmpty(s))
return port;
ReadOnlySpan<char> span = s;
int index = span.IndexOf(':');
if (index == -1 || s.Length < index)
return port;
int.TryParse(span.Slice(index + 1), out port);
return port;
}