GUID가 있습니까?의 구문 분석()을 시도합니다.NET 3.5?
갱신하다
Guid.TryParse는 에서 사용할 수 있습니다.NET 4.0
업데이트 종료
분명히 공개 GUID가 없습니다.의 구문 분석()을 시도합니다.NET CLR 2.0.
그래서 저는 정규 표현[검색어로 검색하여 하나를 찾기도 함]을 찾고 있었는데, 매번 댓글 섹션에서 ReGEx A가 작동하지 않는다는 열띤 논쟁이 있었습니다. ReGEx B를 사용하십시오.그러면 누군가가 레젝스 카이다다라고 쓸 것입니다.
그래서 어쨌든, 제가 결정한 것은 이것이었지만, 저는 그것에 대해 유감스럽게 생각합니다.
public static bool IsGuid (string possibleGuid) {
try {
Guid gid = new Guid(possibleGuid);
return true;
} catch (Exception ex) {
return false;
}
}
분명히 나는 이것을 좋아하지 않습니다. 왜냐하면 당신이 방어적으로 코드화할 수 있다면 예외를 던지는 것을 피하기 위해 첫날부터 나에게 구멍을 뚫었기 때문입니다.
공공 안내서가 없는 이유를 아는 사람?에서 구문 분석()을 시도합니다.NET Framework?
모든 GUID에 사용할 수 있는 실제 정규식을 가진 사람이 있습니까?
GUID가 없습니다.CLR 2.0 이전 버전에서 Parse를 사용해 보십시오.CLR 4.0 및 Visual Studio 2010부터 사용할 수 있습니다.
왜 없었는지에 대해서요이러한 유형의 질문은 일반적으로 정답을 맞추기 어렵습니다.아마도 그것은 실수나 시간 제약 문제였을 것입니다.반사판에서 mscorlib을 열면 실제로 TryParseon이라는 방법이 있다는 것을 알 수 있습니다.Guid개인적인 일입니다그것은 또한 특정한 경우에 예외를 던져서 말하는 것은 좋은 동등하지 않습니다.Int32.TryParse.
Guid.정규식을 사용하여 구문 분석 구현을 시도합니다.
IsGuid가 문자열에 대한 확장 메서드로 구현되었습니다...
public static bool IsGuid(this string stringValue)
{
string guidPattern = @"[a-fA-F0-9]{8}(\-[a-fA-F0-9]{4}){3}\-[a-fA-F0-9]{12}";
if(string.IsNullOrEmpty(stringValue))
return false;
Regex guidRegEx = new Regex(guidPattern);
return guidRegEx.IsMatch(stringValue);
}
에 한해서만.NET Framework 3.5 이전 버전:
의 이러한 구현TryParsefor Guids는 잘못된 형식의 Guids를 잡기 위해 시도 캐치를 사용합니다.확장 메서드로 구현되며 정적 클래스에 배치해야 합니다.
public static bool TryParseGuid(this string s, out Guid guid)
{
try {
guid = new Guid(s);
return true;
} catch {
guid = Guid.Empty;
return false;
}
}
으로 부를 수 있습니다.
string s = "{CA761232-ED42-11CE-BACD-00AA0057B223}";
Guid id;
if (s.TryParseGuid(out id)) {
// TODO: use id
} else {
// Sorry not a valid Guid.
}
C# 7.0 / Visual Studio 2017부터는 인라인 변수 선언을 사용하여 다음과 같이 호출할 수 있습니다.
string s = "{CA761232-ED42-11CE-BACD-00AA0057B223}";
if (s.TryParseGuid(out Guid id)) {
// TODO: use id
} else {
// Sorry not a valid Guid.
}
.NET Framework 4.0 이후,System.Guid제공합니다.TryParse그리고.TryPareExact위의 코드 스니펫을 더 이상 사용하지 않도록 만드는 메서드입니다.
그것이 없는 이유에 관해서는, 그것은 무시입니다.다음이 있을 것입니다.Guid.TryParse.NET 4(자세한 내용은 BCL 블로그 게시물 참조)에 있습니다.
에는 TryParse 기능이 없습니다.현재 제가 알기로는 NET Framework입니다.RegEx 또는 Try-Catch 옵션에 의존해야 합니다.RegEx는 제 취향이 아니라서 다른 사람이 답을 올릴 것이라고 확신합니다.
예외 사항은 성능 면에서 비용이 많이 들기 때문에, 저는 RegEx 옵션에 투표합니다.
이렇게 하면 됩니다.
@"^\{?[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}\}?$"
GUID 확장 방법으로 자신만의 TryParse를 작성할 수 있습니다.그러면 MS의 '진짜'가 나타나면, 당신은 이미 갈 만하고 바꿀 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/1688624/is-there-a-guid-tryparse-in-net-3-5
'programing' 카테고리의 다른 글
| NPM에서 devDependencies를 업데이트하려면 어떻게 해야 합니까? (0) | 2023.08.08 |
|---|---|
| Angular2, 앵커 요소를 비활성화하는 올바른 방법은 무엇입니까? (0) | 2023.08.08 |
| 특정 스키마에서 데이터베이스의 모든 테이블 내에서 열 이름을 검색하는 방법 (0) | 2023.08.08 |
| Android:스크롤 뷰 대 중첩 스크롤 뷰 (0) | 2023.08.08 |
| 날짜 시간을 날짜 시간 오프셋으로 캐스팅하는 방법은 무엇입니까? (0) | 2023.08.08 |