GUID को कैसे मान्य करें एक GUID है


97

यह निर्धारित करने के लिए कि यदि स्ट्रिंग में GUID बनाम संख्याओं का स्ट्रिंग है।

क्या GUID में हमेशा कम से कम 1 अल्फा वर्ण होता है?


जवाबों:



9

जब मैं सिर्फ यह देखने के लिए एक स्ट्रिंग का परीक्षण कर रहा हूं कि क्या यह एक 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
2018 के लिए अपडेटreturn Guid.TryParse(value, out var _);
7

7

एक 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})$"

से http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm । उस ने कहा, इस बात पर जोर दिया जाना चाहिए कि GUID वास्तव में 128-बिट संख्या है और इसे विभिन्न तरीकों से दर्शाया जा सकता है।


6

इसमें कोई गारंटी नहीं है कि एक GUID में अल्फा वर्ण हैं। FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFFएक वैध GUID है 00000000-0000-0000-0000-000000000000और बीच में कुछ भी है।

यदि आप .NET 4.0 का उपयोग कर रहे हैं, तो आप उपर्युक्त उत्तर का उपयोग Guid.Parse और Guide.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

स्वीकृत उत्तर के आधार पर मैंने एक एक्सटेंशन विधि बनाई जो निम्नानुसार है:

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

जहां "मैजिकन्यूट्स.डेफॉल्टगाइड" सिर्फ एक खाली "सभी शून्य गाइड" 00000000-0000-0000-0000-0000-000000000000 है।

मेरे मामले में एक अमान्य ToGuid रूपांतरण के परिणामस्वरूप उस मूल्य को वापस करना कोई समस्या नहीं थी।


2
क्यों MagicNumbers Guide.Empty पर उपयोग करें?
मट्टुमोटू


1

यदि यह सही गाइड है तो गाइड वापस कर देगा, अन्यथा यह गाइड वापस कर देगा। खाली करें

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


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

विदित हो कि प्रश्न C # भाषा के लिए किया गया था और उपलब्ध उत्तर VB.Net में है। इसे C # के लिए मैप करना अच्छा रहेगा।
पेम्टा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.