检查 C# 字符串是否格式正确 url 带有端口号
Check if a C# string is a well formed url with a port number
我得到一个字符串,我检查它是否代表 URL,如下所示:
if(Uri.IsWellFormedUriString(urlString, UriKind.Absolute)) ...
是否还有一种方法可以添加检查 url 是否包含端口号?
public class WhosebugQuestion
{
public string Run() {
string urlString = "http://mywebsite:8001/application/api";
if (Uri.IsWellFormedUriString(urlString, UriKind.Absolute) && urlString.IncludesPort())
return "The uri contains explicitly defined port";
return "";
}
}
public static class Extensions {
public static bool IncludesPort(this string urlAddress)
{
urlAddress = urlAddress.Replace("http://", "").Replace("https://", "");
var splitted = urlAddress.Split(':');
var port = splitted?[1].Split("/")?[0];
return port != null && int.TryParse(port, out _);
}
}
您可以将所有繁重的工作卸载给 Uri 构造函数:
var uri = new Uri(urlString);
那么你只需要解读uri.Authority
。如果它包含冒号,则指定端口。
public static bool IncludesPort(this string urlAddress)
{
return new Uri(urlAddress).Authority.Contains(':');
}
我得到一个字符串,我检查它是否代表 URL,如下所示:
if(Uri.IsWellFormedUriString(urlString, UriKind.Absolute)) ...
是否还有一种方法可以添加检查 url 是否包含端口号?
public class WhosebugQuestion
{
public string Run() {
string urlString = "http://mywebsite:8001/application/api";
if (Uri.IsWellFormedUriString(urlString, UriKind.Absolute) && urlString.IncludesPort())
return "The uri contains explicitly defined port";
return "";
}
}
public static class Extensions {
public static bool IncludesPort(this string urlAddress)
{
urlAddress = urlAddress.Replace("http://", "").Replace("https://", "");
var splitted = urlAddress.Split(':');
var port = splitted?[1].Split("/")?[0];
return port != null && int.TryParse(port, out _);
}
}
您可以将所有繁重的工作卸载给 Uri 构造函数:
var uri = new Uri(urlString);
那么你只需要解读uri.Authority
。如果它包含冒号,则指定端口。
public static bool IncludesPort(this string urlAddress)
{
return new Uri(urlAddress).Authority.Contains(':');
}