C# 有没有办法知道guid是否看起来像“a”;“正常”;带字符和数字的guid?
在c#.net 4.0中,我正在将字符串转换为guid,以检查该字符串是否为有效的guid 字符串为:C# 有没有办法知道guid是否看起来像“a”;“正常”;带字符和数字的guid?,c#,.net,visual-studio-2010,guid,C#,.net,Visual Studio 2010,Guid,在c#.net 4.0中,我正在将字符串转换为guid,以检查该字符串是否为有效的guid 字符串为: string guid=“11111111-1111-1111-1111-111111111” 此guid对我来说应该无效,即使它的字符数与guid的字符数相同。有没有办法检查guid是否与具有不同字符和数字的“普通”guid相似 所有这些方法都不起作用,因为它们返回的guid对我来说是有效的 Guid.Parse Guid.TryParse Guid.TryParseExact 谢谢大
string guid=“11111111-1111-1111-1111-111111111”代码>
此guid对我来说应该无效,即使它的字符数与guid的字符数相同。有没有办法检查guid是否与具有不同字符和数字的“普通”guid相似
所有这些方法都不起作用,因为它们返回的guid对我来说是有效的
Guid.Parse
Guid.TryParse
Guid.TryParseExact
谢谢大家!
编辑:
为了澄清,我需要检查我的guid是否与以下guid类似:dc6a1ad8-4743-4487-a28e-54d31870dfcb
我们可以抛弃“无效”和“有效”两个词,因为人们似乎有点关注这两个词。因此,我需要确保guid看起来更像:dc6a1ad8-4743-4487-a28e-54d31870dfcb,而不是:11111111-1111-1111-1111-111111111如果您只想检查guid
是否有不同的字符,可以检查它包含的不同字节数:
int count = yourGuid.ToByteArray().Distinct().Count();
对于Guid.Empty
或11111111-1111-1111-1111-111111111
,结果将是1
对于dc6a1ad8-4743-4487-a28e-54d31870dfcb
,结果为16
您只需决定接受Guid
为“正常”所需的数字大小即可。好的,那么您的自定义逻辑是什么,告诉您它不是有效的Guid?它非常有效。您首先需要定义什么是有效的GUID。@Esailija-但这不是问题所在Guid.Empty
返回由所有0
s组成的有效Guid实例。人脑和随机性有问题->它们不合适!123456789(由RNG创建)与6481286412和111111111一样随机。第一个和第三个数字看起来不那么随机,因为你的大脑总是试图找到一个原因/意义/模式。为什么人们会因为一个问题而愤怒?上帝……@syncis:老实说,那是胡说八道。12345678-ABCD-ABCD-ABCD-ABCD-ABCD-123456789012-看起来“假”,会通过考试的。顺便说一句:通过整理“奇怪”的guid,你可以摆脱一些随机性@igrimpe:12345678-ABCD-ABCD-ABCD-123456789012
返回7
。正如我所说的,决定哪一个数字足够高,可以认为<代码> GUID <代码>是“正常”的,这显然取决于“正常”的定义。@ DanielHilgarth:我并不是说这是一个特别明智的事情。我只是回答这个问题!:)@syncis:您没有指定您所看到的“正常”GUID。这就是我和其他人想要告诉你的。