7 ответов:
посмотреть, если это помогает :-
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 so is00000000-0000-0000-0000-000000000000и все, что между ними.Если вы используете .Net версии 4.0, вы можете использовать приведенные выше ответа на идентификатор GUID.Разбор и 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-символьной шестнадцатеричной строкой. GUID (в шестнадцатеричной форме) не должен содержать никаких Альфа-символов, хотя случайно это, вероятно, будет. Если вы нацелены на GUID в шестнадцатеричной форме, вы можете проверить, что строка имеет длину 32 символа (после удаления тире и фигурных скобок) и имеет только буквы A-F и цифры.
существует определенный стиль представления 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})$"
на основе принятого ответа, я создал метод расширения, как показано ниже:
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; }
когда я просто тестирую строку, чтобы увидеть, является ли она 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)) { ... }
Comments