문자열에 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인지 확인하기 위해 문자열을 테스트 할 때 필요하지 않은 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))
{
...
}
return Guid.TryParse(value, out var _);
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에 영문자가 포함되어 있다는 보장은 없습니다. 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;
}
}
수락 된 답변을 기반으로 다음과 같이 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 참조
알파가 실제로 거기에있을 것이라는 보장은 없습니다.