.NET 4.0: drugie łącze ... w innym przypadku, pierwsze łącze. +1
Khepri
C # 7.0 używa var lub Guid lub _ dla zmiennych inline out bool isValid = Guid.TryParse(inputString, out var tempGuid);lubbool isValid = Guid.TryParse(inputString, out _);
xadriel
9
Kiedy tylko testuję ciąg, aby sprawdzić, czy jest to identyfikator GUID, tak naprawdę nie chcę tworzyć obiektu Guid, którego nie potrzebuję. Więc...
aktualizacja na 2018 rokreturn Guid.TryParse(value, out var _);
waitforit
7
Identyfikator GUID to 16-bajtowa (128-bitowa) liczba, zwykle reprezentowana przez 32-znakowy ciąg szesnastkowy. GUID (w postaci szesnastkowej) nie musi zawierać żadnych znaków alfanumerycznych, chociaż przypadkowo prawdopodobnie tak. Jeśli celujesz w identyfikator GUID w postaci szesnastkowej, możesz sprawdzić, czy ciąg ma 32 znaki (po usunięciu myślników i nawiasów klamrowych) i zawiera tylko litery AF i cyfry.
Istnieje pewien styl prezentacji identyfikatorów GUID (umieszczanie myślników) i można to sprawdzić za pomocą wyrażeń regularnych, np.
Nie ma gwarancji, że identyfikator GUID zawiera znaki alfabetu. FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFFjest prawidłowym identyfikatorem GUID, więc jest 00000000-0000-0000-0000-000000000000i wszystko pomiędzy.
Jeśli używasz .NET 4.0, możesz użyć powyższej odpowiedzi dla Guid.Parse i Guid.TryParse. W przeciwnym razie możesz zrobić coś takiego:
publicstaticboolTryParseGuid(string guidString, out Guid guid)
{
if (guidString == null) thrownew ArgumentNullException("guidString");
try
{
guid = new Guid(guidString);
returntrue;
}
catch (FormatException)
{
guid = default(Guid);
returnfalse;
}
}
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
Odpowiedzi:
Sprawdź, czy te informacje pomogą: -
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
źródło
bool isValid = Guid.TryParse(inputString, out var tempGuid);
lubbool isValid = Guid.TryParse(inputString, out _);
Kiedy tylko testuję ciąg, aby sprawdzić, czy jest to identyfikator GUID, tak naprawdę nie chcę tworzyć obiektu Guid, którego nie potrzebuję. Więc...
public static class GuidEx { public static bool IsGuid(string value) { Guid x; return Guid.TryParse(value, out x); } }
A oto jak tego używasz:
string testMe = "not a guid"; if (GuidEx.IsGuid(testMe)) { ... }
źródło
return Guid.TryParse(value, out var _);
Identyfikator GUID to 16-bajtowa (128-bitowa) liczba, zwykle reprezentowana przez 32-znakowy ciąg szesnastkowy. GUID (w postaci szesnastkowej) nie musi zawierać żadnych znaków alfanumerycznych, chociaż przypadkowo prawdopodobnie tak. Jeśli celujesz w identyfikator GUID w postaci szesnastkowej, możesz sprawdzić, czy ciąg ma 32 znaki (po usunięciu myślników i nawiasów klamrowych) i zawiera tylko litery AF i cyfry.
Istnieje pewien styl prezentacji identyfikatorów GUID (umieszczanie myślników) i można to sprawdzić za pomocą wyrażeń regularnych, np.
@"^(\{{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})$"
z http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm . To powiedziawszy, należy podkreślić, że identyfikator GUID jest naprawdę 128-bitową liczbą i może być reprezentowany na wiele różnych sposobów.
źródło
Nie ma gwarancji, że identyfikator GUID zawiera znaki alfabetu.
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
jest prawidłowym identyfikatorem GUID, więc jest00000000-0000-0000-0000-000000000000
i wszystko pomiędzy.Jeśli używasz .NET 4.0, możesz użyć powyższej odpowiedzi dla Guid.Parse i Guid.TryParse. W przeciwnym razie możesz zrobić coś takiego:
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; } }
źródło
Na podstawie zaakceptowanej odpowiedzi utworzyłem następującą metodę rozszerzenia:
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; }
Gdzie „MagicNumbers.defaultGuid” to po prostu „pusty” zero Guid „00000000-0000-0000-0000-000000000000”.
W moim przypadku zwrócenie tej wartości w wyniku nieprawidłowej konwersji ToGuid nie było problemem.
źródło
zobacz http://en.wikipedia.org/wiki/Globally_unique_identifier
Nie ma gwarancji, że alfa rzeczywiście tam będzie.
źródło
Zwróci Guid, jeśli jest ważny Guid, w przeciwnym razie zwróci Guid.Empty
if (!Guid.TryParse(yourGuidString, out yourGuid)){ yourGuid= Guid.Empty; }
źródło
źródło
Użyj standardowych funkcji konstruktora 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
źródło