如何验证 GUID 是一个 GUID

如何确定一个字符串是否包含 GUID,而不仅仅是一个数字字符串。

GUID 是否总是包含至少1个字母字符?

207582 次浏览

看看这些是否有帮助:-

  1. Guid.Parse-文档
Guid guidResult = Guid.Parse(inputString)
  1. Guid.TryParse-文档
bool isValid = Guid.TryParse(inputString, out guidOutput)

GUID 是一个16字节(128位)的数字,通常由32个字符的十六进制字符串表示。GUID (十六进制形式)不需要包含任何字母字符,尽管偶尔可能会包含。如果您的目标是十六进制形式的 GUID,您可以检查字符串是32个字符长(去掉破折号和花括号后) ,并且只有字母 A-F 和数字。

有一些特定风格的 GUID (破折号放置)和正则表达式可以用来检查这一点,例如,

@"^(\\{\{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})$"

http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm。也就是说,应该强调的是 GUID 实际上是一个128位的数字,可以用许多不同的方式表示。

http://en.wikipedia.org/wiki/Globally_unique_identifier

不能保证字母真的会出现。

不能保证 GUID 包含字母字符。FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF是一个有效的 GUID,00000000-0000-0000-0000-000000000000和其他介于两者之间的 GUID 也是如此。

如果你正在使用。NET 4.0,你可以使用上面的答案为指南。Parse 和 Guid。尝试解析。否则,你可以这样做:

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;
}
}

将返回有效的 Guid,否则将返回 Guid

if (!Guid.TryParse(yourGuidString, out yourGuid)){
yourGuid= Guid.Empty;
}

根据已接受的答案,我创建了一个扩展方法,如下所示:

public static Guid ToGuid(this string aString)
{
Guid newGuid;


if (string.IsNullOrWhiteSpace(aString))
{
return MagicNumbers.defaultGuid;
}


if (Guid.TryParse(aString, out newGuid))
{
return newGuid;
}


return MagicNumbers.defaultGuid;
}

其中“ MagicNumbers.defaultGuid”只是“一个空的”所有零 Guid“0000000-0000-0000-000000000000”。

在我的例子中,作为无效 ToGuid 转换的结果返回该值不是问题。

当我只是测试一个字符串以确定它是否是一个 GUID 时,我并不想创建一个不需要的 GUID 对象。那么..。

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))
{
...
}

使用 GUID 构造函数标准功能

Public Function IsValid(pString As String) As Boolean


Try
Dim mGuid As New Guid(pString)
Catch ex As Exception
Return False
End Try
Return True


End Function
if(MyGuid != Guid.Empty)
{
// Valid Guid
}
else
{
// Invalid Guid
}

这是一个相当干净的、现代的 C # 方法,它抑制 out 变量:

var isValid = Guid.TryParse(inputString, out _);