GUIDを検証する方法はGUIDです


回答:



9

文字列を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))
{
...
}

5
2018年の更新return Guid.TryParse(value, out var _);
waitforit

7

GUIDは16バイト(128ビット)の数値で、通常は32文字の16進数文字列で表されます。GUIDは(16進形式で)アルファベット文字を含む必要はありませんが、たぶん含まれている可能性があります。16進形式のGUIDを対象とする場合、文字列が32文字(ダッシュと中括弧を取り除いた後)であり、文字AFと数字のみであることを確認できます。

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ビットの数値であり、さまざまな方法で表すことができることを強調しておく必要があります。


6

GUIDに英字が含まれている保証はありません。FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFFは有効なGUIDであり、そのため00000000-0000-0000-0000-000000000000、その間に何でもあります。

.NET 4.0を使用している場合は、Guid.Parseおよび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;
    }
}

2

受け入れられた回答に基づいて、次のように拡張メソッドを作成しました。

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変換の結果としてその値を返すことは問題ではありませんでした。


2
Guid.EmptyではなくMagicNumbersを使用する理由
mattumotu


1

有効なGuidであればGuidを返し、それ以外の場合はGuid.Emptyを返します

if (!Guid.TryParse(yourGuidString, out yourGuid)){
          yourGuid= Guid.Empty;
}


0

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

質問はC#言語に対して行われたものであり、提供された回答はVB.Netにあることに注意してください。C#用にマップするとよいでしょう。
ピメンタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.