GUID nasıl doğrulanır bir GUID'dir


Yanıtlar:


176

Bunların yardımcı olup olmadığına bakın: -

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


4
.NET 4.0: İkinci bağlantı ... diğer, ilk bağlantı. +1
Khepri

C # 7.0 satır içi değişkenler için var veya Guid veya _ kullanın bool isValid = Guid.TryParse(inputString, out var tempGuid);veyabool isValid = Guid.TryParse(inputString, out _);
xadriel

10

Bir GUID olup olmadığını görmek için sadece bir dizeyi test ettiğimde, gerçekten ihtiyacım olmayan bir Guid nesnesi oluşturmak istemiyorum. Yani...

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

Ve işte bunu nasıl kullanacağınız:

string testMe = "not a guid";
if (GuidEx.IsGuid(testMe))
{
...
}

7
2018 için güncellemereturn Guid.TryParse(value, out var _);
saat 07

7

Bir GUID, genellikle 32 karakterlik onaltılık bir dizeyle gösterilen 16 baytlık (128 bit) bir sayıdır. Bir GUID'in (onaltılık formda) herhangi bir alfa karakter içermesi gerekmez, ancak şans eseri muhtemelen olabilir. Bir GUID'i onaltılık biçimde hedefliyorsanız, dizenin 32 karakter uzunluğunda olduğunu (kısa çizgiler ve süslü parantezler çıkarıldıktan sonra) ve yalnızca AF ve rakamlar içerdiğini kontrol edebilirsiniz.

GUID'leri sunmanın belirli bir tarzı vardır (kısa çizgi yerleştirme) ve bunu kontrol etmek için düzenli ifadeler kullanılabilir, örneğin,

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

dan http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm . Bununla birlikte, GUID'in gerçekten 128 bitlik bir sayı olduğu ve birkaç farklı şekilde gösterilebileceği vurgulanmalıdır.


6

Bir GUID'in alfa karakterler içerdiğinin garantisi yoktur. FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFFgeçerli bir GUID yani 00000000-0000-0000-0000-000000000000ve aradaki her şey.

.NET 4.0 kullanıyorsanız, Guid.Parse ve Guid. TryParse için yukarıdaki yanıtı kullanabilirsiniz. Aksi takdirde, şöyle bir şey yapabilirsiniz:

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

Kabul edilen cevaba göre aşağıdaki gibi bir Uzantı yöntemi oluşturdum:

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" sadece "boş" tamamen sıfır Guid "00000000-0000-0000-0000-000000000000" dür.

Benim durumumda, geçersiz bir ToGuid dönüşümünün sonucu olarak bu değeri döndürmek bir sorun değildi.


3
Neden MagicNumbers Guid.Empty yerine kullanılıyor?
mattumotu


1

Guid geçerli bir Guid ise, aksi takdirde Guid.Empty döndürür.

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

1

eğer (MyGuid! = Guild.Empty)

{

// Geçerli Lonca

}

Başka {

// Geçersiz Lonca

}


0

GUID yapıcı standart işlevini kullanın

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

Sorunun C # dili için yapıldığını ve verilen cevabın VB.Net'te olduğunu unutmayın. C # için eşlemek güzel olurdu.
Pimenta
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.