如何尝试将string转换为Guid
我没有findGuid的TryParse方法。 我想知道其他人如何处理将string格式的guid转换为guidtypes。
Guid Id; try { Id = new Guid(Request.QueryString["id"]); } catch { Id = Guid.Empty; }
new Guid(string)
你也可以看看使用TypeConverter
。
使用这样的代码:
new Guid("9D2B0228-4D0D-4C23-8B49-01A698857709")
而不是“9D2B0228-4D0D-4C23-8B49-01A698857709”,你可以设置你的string值
Guid.TryParse()
https://msdn.microsoft.com/de-de/library/system.guid.tryparse(v=vs.110).aspx
要么
Guid.TryParseExact()
https://msdn.microsoft.com/de-de/library/system.guid.tryparseexact(v=vs.110).aspx
在.NET 4.0(或3.5?)
这会让你非常接近,而且我在生产中使用它,并且从来没有发生过碰撞。 但是,如果您查看reflection器中的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);
不幸的是,没有相同的TryParse()。 如果您创build一个System.Guid的新实例并传入string值,则可以捕获三个可能的exception,如果该exception无效。
那些是:
- ArgumentNullException
- 出现FormatException
- 发生OverflowException
我已经看到了一些实现,你可以在创build实例之前对string进行正则expression式,如果你只是想validation它而不创build它。
如果你想要的只是一些非常基本的错误检查,你可以检查string的长度。
string guidStr = ""; if( guidStr.Length == Guid.Empty.ToString().Length ) Guid g = new Guid( guidStr );