Antworten:
Sehen Sie, ob dies hilft: -
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
Wenn ich nur eine Zeichenfolge teste, um festzustellen, ob es sich um eine GUID handelt, möchte ich nicht wirklich ein Guid-Objekt erstellen, das ich nicht benötige. So...
public static class GuidEx
{
public static bool IsGuid(string value)
{
Guid x;
return Guid.TryParse(value, out x);
}
}
Und so verwenden Sie es:
string testMe = "not a guid";
if (GuidEx.IsGuid(testMe))
{
...
}
return Guid.TryParse(value, out var _);
Eine GUID ist eine 16-Byte-Zahl (128 Bit), die normalerweise durch eine 32-stellige hexadezimale Zeichenfolge dargestellt wird. Eine GUID (in hexadezimaler Form) muss keine Alpha-Zeichen enthalten, obwohl dies wahrscheinlich zufällig der Fall ist. Wenn Sie auf eine GUID in hexadezimaler Form abzielen, können Sie überprüfen, ob die Zeichenfolge 32 Zeichen lang ist (nachdem Sie Bindestriche und geschweifte Klammern entfernt haben) und nur Buchstaben AF und Zahlen enthält.
Es gibt einen bestimmten Stil für die Darstellung von GUIDs (Dash-Placement), und reguläre Ausdrücke können verwendet werden, um dies zu überprüfen, z.
@"^(\{{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})$"
von http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm . Es sollte jedoch betont werden, dass die GUID tatsächlich eine 128-Bit-Zahl ist und auf verschiedene Arten dargestellt werden kann.
Es gibt keine Garantie dafür, dass eine GUID alphanumerische Zeichen enthält. FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
ist eine gültige GUID 00000000-0000-0000-0000-000000000000
und alles dazwischen.
Wenn Sie .NET 4.0 verwenden, können Sie die obige Antwort für Guid.Parse und Guid.TryParse verwenden. Andernfalls können Sie Folgendes tun:
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;
}
}
Basierend auf der akzeptierten Antwort habe ich eine Erweiterungsmethode wie folgt erstellt:
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;
}
Wobei "MagicNumbers.defaultGuid" nur "eine leere" Null-Guid "00000000-0000-0000-0000-000000000000" ist.
In meinem Fall war es kein Problem, diesen Wert als Ergebnis einer ungültigen ToGuid-Konvertierung zurückzugeben.
Siehe http://en.wikipedia.org/wiki/Globally_unique_identifier
Es gibt keine Garantie dafür, dass ein Alpha tatsächlich vorhanden ist.
if (MyGuid! = Guild.Empty)
{
// Gültige Gilde
}}
sonst {
// Ungültige Gilde
}}
Verwenden Sie die Standardfunktionalität des GUID-Konstruktors
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