如何验证GUID是一个GUID

001*_*001 73 c# asp.net string guid

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

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

Dee*_*esh 133

看看这些是否有帮助: -

Guid guidResult = Guid.Parse(inputString)

(http://msdn.microsoft.com/en-us/library/system.guid.parse.aspx)

bool isValid = Guid.TryParse(inputString, out guidOutput)

http://msdn.microsoft.com/en-us/library/system.guid.tryparse.aspx

  • C# 7.0 使用 var 或 Guid 或 _ 作为内联输出变量 `bool isValid = Guid.TryParse(inputString, out var tempGuid);` 或 `bool isValid = Guid.TryParse(inputString, out _);` (4认同)
  • .NET 4.0:第二个链接......否则,第一个链接.+1 (3认同)
  • 或者Guid.TryParseExact :-) (3认同)

Jes*_*ica 27

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

var isValid = Guid.TryParse(inputString, out _);
Run Code Online (Sandbox Code Playgroud)


Can*_*cer 7

无法保证GUID包含字母字符.FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF是一个有效的GUID,因此是00000000-0000-0000-0000-000000000000介于两者之间的任何东西.

如果您使用的是.NET 4.0,则可以将上面的答案用于Guid.Parse和Guid.TryParse.否则,您可以执行以下操作:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


tof*_*tim 6

GUID是一个16字节(128位)的数字,通常由32个字符的十六进制字符串表示.GUID(以十六进制形式)不需要包含任何字母字符,但它可能会偶然.如果您以十六进制格式定位GUID,则可以检查字符串是否为32个字符长(在删除破折号和大括号后)并且只有字母AF和数字.

存在某种呈现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})$"
Run Code Online (Sandbox Code Playgroud)

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


Dou*_*ter 5

当我仅测试一个字符串以查看它是否为GUID时,我实际上并不想创建不需要的Guid对象。所以...

public static class GuidEx
{
    public static bool IsGuid(string value)
    {
        Guid x;
        return Guid.TryParse(value, out x);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用方法如下:

string testMe = "not a guid";
if (GuidEx.IsGuid(testMe))
{
...
}
Run Code Online (Sandbox Code Playgroud)

  • 2018 年更新`return Guid.TryParse(value, out var _);` (9认同)