Как проверить GUID-это GUID



Как определить, содержит ли строка GUID против просто строки чисел.



будет ли GUID всегда содержать хотя бы 1 Альфа-символ?

752   7  

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 is 00000000-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})$"

от http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm тем не менее, следует подчеркнуть, что GUID действительно является 128-битным числом и может быть представлен несколькими различными способами.

на основе принятого ответа, я создал метод расширения, как показано ниже:

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

    Ничего не найдено.