如何验证某个 string 是否为合法的 GUID ?
咨詢區(qū)
001:
假如有一個(gè)string字符串,請(qǐng)問(wèn)如何判斷它是合法的GUID還是一個(gè)普通的數(shù)字型字符串, 是否可以用包含 字母 進(jìn)行區(qū)分?
回答區(qū)
Can Gencer:
判斷是否有 字母 的方式是不靠譜的,比如說(shuō):FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF 它是一個(gè)有效的 GUID,而 00000000-0000-0000-0000-000000000000 也是一個(gè)有效的GUID。
其實(shí)可以通過(guò) Guid.Parse 或者 Guid.TryParse 來(lái)強(qiáng)制轉(zhuǎn)換,參考如下代碼:
public?static?class?GuidEx {public?static?bool?IsGuid(string?value){Guid?x;return?Guid.TryParse(value,?out?x);} }然后像下面這樣使用。
string?testMe?=?"not?a?guid"; if?(GuidEx.IsGuid(testMe)) { ... }如果你用的是 .NET 4.0 之前的版本,可以用 構(gòu)造函數(shù) 的方式進(jìn)行判斷,比如下面這樣:
public?static?bool?TryParseGuid(string?guidString,?out?Guid?guid) {if?(guidString?==?null)?throw?new?ArgumentNullException("guidString");try{guid?=?new?Guid(guidString);return?true;}catch?(FormatException){guid?=?default(Guid);return?false;} }tofutim:
GUID 是一個(gè) 16byte 長(zhǎng)度的數(shù)字,但通常都是用 32 個(gè)16進(jìn)制字符表示,所以你看到的 GUID 不一定包含字母,只不過(guò)那么大一串你大概率會(huì)遇到而已。
換句話說(shuō),比如你的 GUID 是16進(jìn)制表示的,那你可以簡(jiǎn)單的判斷這個(gè)string的length是否為32差不多就可以了,如果嚴(yán)謹(jǐn)一點(diǎn)的話,可以使用正則。
public?static?bool?IsGUID(string?expression) {if?(expression?!=?null){Regex?guidRegEx?=?new?Regex(@"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$");return?guidRegEx.IsMatch(expression);}return?false; }點(diǎn)評(píng)區(qū)
判斷一個(gè)string是否為合法的 GUID,居然有四種方法,挺好,學(xué)習(xí)了。
總結(jié)
以上是生活随笔為你收集整理的如何验证某个 string 是否为合法的 GUID ?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数字化如何界定IT与OT?
- 下一篇: Asp.NET Core 如何使用Ela