我有以下网址:turnerstadium.co.il
,我正在尝试检查scheme
是否正确,所以我这样做了:
if (!Uri.CheckSchemeName(link))
{
link = "http://" + link;
}
问题是CheckSchemeName
返回true
,所以当我这样做时:
var url = new Uri(link);
我得到:
无效的URI:无法确定URI的格式
我该如何解决?
答案 0 :(得分:0)
这是CheckSchemeName方法的代码。
public static bool CheckSchemeName(string schemeName)
{
if (schemeName == null || schemeName.Length == 0 || !Uri.IsAsciiLetter(schemeName[0]))
return false;
for (int index = schemeName.Length - 1; index > 0; --index)
{
if (!Uri.IsAsciiLetterOrDigit(schemeName[index]) && schemeName[index] != '+' && (schemeName[index] != '-' && schemeName[index] != '.'))
return false;
}
return true;
}
来自Uri.CheckSchemeName的备注部分:
方案名称必须以字母开头,并且只能包含 字母,数字和字符“。”,“ +”或“-”。
因此,如您所见,此方法仅检查您传递的字符串是否满足这些要求。
如果您只想检查字符串是否以“ http://”开头,并在不存在的情况下附加该字符串,则可能的解决方案之一是:
if (!link.StartsWith("http://"))
{
link = "http://" + link;
}
否则,我建议阅读this。
答案 1 :(得分:-1)
在以下位置检查UriBuilder:https://docs.microsoft.com/en-us/dotnet/api/system.uribuilder?view=netframework-4.7.2
如果不存在该方案,则可以使用构造函数来添加该方案。
var url = new UriBuilder("siteUrl.com").Uri.ToString();
这将返回“ http://siteUrl.com”