相关疑难解决方法(0)

如何检查uri字符串是否有效

如何检查uri字符串是否有效(您可以将其提供给Uri构造函数)?

到目前为止,我只有以下内容,但由于显而易见的原因,我更喜欢不那么粗野的方式:

    Boolean IsValidUri(String uri)
    {
        try
        {
            new Uri(uri);
            return true;
        }
        catch
        {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我尝试了Uri.IsWellFormedUriString,但它似乎并不喜欢你可以在构造函数中抛出的所有内容.例如:

String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));
Run Code Online (Sandbox Code Playgroud)

输出将是:

Uri.IsWellFormedUriString says: False
IsValidUri says: True
Run Code Online (Sandbox Code Playgroud)

更新/应答

Uri构造函数默认使用类Absolute.当我尝试使用Uri.TryCreate和构造函数时,这导致了差异.如果匹配构造函数和TryCreate的UriKind,则会获得预期的结果.

.net c# uri

62
推荐指数
3
解决办法
8万
查看次数

为什么用Regex.IsMatch检查此字符串会导致CPU达到100%?

Regex.IsMatch特定字符串上使用(C#,.Net 4.5)时,CPU达到100%.

串:

https://www.facebook.com/CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792/?type=1&permPage=1
Run Code Online (Sandbox Code Playgroud)

图案:

^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$
Run Code Online (Sandbox Code Playgroud)

完整代码:

Regex.IsMatch("https://www.facebook.com/CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792/?type=1&permPage=1",
                @"^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$");
Run Code Online (Sandbox Code Playgroud)

我发现编辑URL可以防止出现此问题.编辑的URL:

https://www.facebook.com/CashKingPirates/photos/a.197028616990372.62904.196982426994991/1186500984709792
Run Code Online (Sandbox Code Playgroud)

但仍然非常有兴趣了解导致这种情况的原因.

.net c# regex

16
推荐指数
2
解决办法
1142
查看次数

IS String是有效的URL或NOT

我正在使用带有此代码的.net 2010 c#windows应用程序:检查有效Uri与否

码:

static bool IsValidUrl(string urlString)
{
    Uri uri;
    return Uri.TryCreate(urlString, UriKind.Absolute, out uri)
        && (uri.Scheme == Uri.UriSchemeHttp
         || uri.Scheme == Uri.UriSchemeHttps
         || uri.Scheme == Uri.UriSchemeFtp
         || uri.Scheme == Uri.UriSchemeMailto
         );
}
Run Code Online (Sandbox Code Playgroud)

问题:如果我验证这个http://http://www.Google.com我得到它的有效但当我尝试使用IE时它没有显示任何网站.

有没有办法找出String是否有效uri?(没有使用正则表达式和互联网访问)

c# uri

3
推荐指数
1
解决办法
5572
查看次数

标签 统计

c# ×3

.net ×2

uri ×2

regex ×1