program story

GUID가 GUID인지 확인하는 방법

inputbox 2020. 11. 4. 07:58
반응형

GUID가 GUID인지 확인하는 방법


문자열에 GUID가 포함되어 있는지 아니면 숫자 문자열 만 포함되어 있는지 확인하는 방법.

GUID에는 항상 최소 1 개의 영문자가 포함됩니까?


이것이 도움이되는지 확인하십시오 :-

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


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

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 비트 숫자이며 다양한 방식으로 표현 될 수 있다는 점을 강조해야합니다.


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

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


http://en.wikipedia.org/wiki/Globally_unique_identifier 참조

알파가 실제로 존재한다는 보장은 없습니다.


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

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

참고 URL : https://stackoverflow.com/questions/6211017/how-to-validate-guid-is-a-guid

반응형