GUID가 GUID인지 확인하는 방법


답변:



9

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

6
2018 년 업데이트return Guid.TryParse(value, out var _);
waitforit

7

GUID는 16 바이트 (128 비트) 숫자이며 일반적으로 32 자 16 진수 문자열로 표시됩니다. GUID (16 진수 형식)는 우연히 그럴 가능성이 있지만 어떤 영문자도 포함 할 필요가 없습니다. 16 진수 형식의 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 및 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

수락 된 답변을 기반으로 다음과 같이 Extension 메서드를 만들었습니다.

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 변환의 결과로 해당 값을 반환하는 것이 문제가되지 않았습니다.


2
Guid.Empty 대신 MagicNumbers를 사용하는 이유는 무엇입니까?
mattumotu


1

유효한 Guid이면 Guid를 반환하고, 그렇지 않으면 Guid를 반환합니다.

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 #에 매핑하면 좋을 것입니다.
Pimenta
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.