如何验证GUID是一个GUID

时间:2011-06-02 06:02:11

标签: c# asp.net string guid

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

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

9 个答案:

答案 0 :(得分:107)

看看这些是否有帮助: -

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

答案 1 :(得分: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;
    }
}

答案 2 :(得分:5)

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位的数字,可以通过多种不同的方式表示。

答案 3 :(得分:2)

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

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" 00000000-0000-0000-0000-000000000000"。

在我的情况下,作为无效ToGuid转换的结果返回该值不是问题。

答案 4 :(得分:2)

当我只是测试一个字符串以查看它是否是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))
{
...
}

答案 5 :(得分:1)

请参阅http://en.wikipedia.org/wiki/Globally_unique_identifier

无法保证alpha实际存在。

答案 6 :(得分:1)

如果Guid是有效Guid将返回Guid,否则它将返回Guid.Empty

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

答案 7 :(得分:1)

if(MyGuid!= Guild.Empty)

{

//有效的公会

}

其他 {

//无效的公会

}

答案 8 :(得分:0)

使用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