我有一个网址,我需要检查它是否以http://或https://开头,并且网址的长度不超过493个字符。
到目前为止,我有这个条件声明:
else if (!url.Text.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ||
!url.Text.StartsWith("https://", StringComparison.OrdinalIgnoreCase) &&
url.Text.Length > 493)
IsValid = false;
但是,如果网址包含http://或https://
,则返回true不确定为什么会这样?
答案 0 :(得分:3)
您需要&&
而不是||
,假设您的字符串以https
开头,那么首先检查StartsWith("http://"
会给true
。如果文本以http
else if (!url.Text.StartsWith("http://", StringComparison.OrdinalIgnoreCase) && !url.Text.StartsWith("https://", StringComparison.OrdinalIgnoreCase) && url.Text.Length > 493)
IsValid = false;
您可以将两个条件与||结合使用用<!p>否定结果
if (!(url.Text.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || url.Text.StartsWith("https://", StringComparison.OrdinalIgnoreCase) && url.Text.Length > 493)
答案 1 :(得分:2)
您需要将||
更改为&&
答案 2 :(得分:1)
网址将以http
或https
开头,这意味着其中一个将始终为真。您需要使用&&
答案 3 :(得分:0)
导致问题的||
和&&
逻辑
将其重新编写为嵌套if
以使其更清晰
private static bool IsValidUrl(string url)
{
if(url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ||
url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
if(url.Text.Length < 493)
return true;
return false;
}