如何尝试将字符串转换为Guid

时间:2008-12-08 19:03:28

标签: c#

我没有为Guid找到TryParse方法。我想知道其他人如何处理将字符串格式的guid转换为guid类型。

Guid Id;
try
{
    Id = new Guid(Request.QueryString["id"]);
}
catch
{
    Id = Guid.Empty;
}

6 个答案:

答案 0 :(得分:273)

new Guid(string)

您还可以查看使用TypeConverter

答案 1 :(得分:105)

使用这样的代码:

new Guid("9D2B0228-4D0D-4C23-8B49-01A698857709")

代替“9D2B0228-4D0D-4C23-8B49-01A698857709”,您可以设置字符串值

答案 2 :(得分:20)

答案 3 :(得分:7)

这会让你非常接近,我在生产中使用它并且从未发生过碰撞。但是,如果你在反射器中查看guid的构造函数,你会看到它所做的所有检查。

 public static bool GuidTryParse(string s, out Guid result)
    {
        if (!String.IsNullOrEmpty(s) && guidRegEx.IsMatch(s))
        {
            result = new Guid(s);
            return true;
        }

        result = default(Guid);
        return false;
    }

    static Regex guidRegEx = new Regex("^[A-Fa-f0-9]{32}$|" +
                          "^({|\\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\\))?$|" +
                          "^({)?[0xA-Fa-f0-9]{3,10}(, {0,1}[0xA-Fa-f0-9]{3,6}){2}, {0,1}({)([0xA-Fa-f0-9]{3,4}, {0,1}){7}[0xA-Fa-f0-9]{3,4}(}})$", RegexOptions.Compiled);

答案 4 :(得分:3)

不幸的是,没有TryParse()等价物。如果您创建System.Guid的新实例并传入字符串值,则可以捕获它在无效时可能抛出的三个异常。

那些是:

  • ArgumentNullException
  • 出现FormatException
  • 发生OverflowException

我已经看到了一些实现,你可以在创建实例之前对字符串执行正则表达式,如果你只是想验证它而不是创建它。

答案 5 :(得分:0)

如果你想要的只是一些非常基本的错误检查,你可以检查一下字符串的长度。

              string guidStr = "";
              if( guidStr.Length == Guid.Empty.ToString().Length )
                 Guid g = new Guid( guidStr );