web-dev-qa-db-ja.com

検証方法GUIDはGUID

文字列にGUID vs数字列だけが含まれているかどうかを判断する方法。

GUIDは常に少なくとも1つのアルファ文字を含みますか?

67
001

これらが役立つかどうかを確認してください:-

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

120
Deepesh

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;
    }
}
7
Can Gencer

A GUIDは16バイト(128ビット)の数値で、通常は32文字の16進文字列で表されます。AGUID(16進形式)) GUIDを16進形式でターゲットにしている場合、ダッシュと中括弧を削除した後、文字列が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})$"

from http://www.geekzilla.co.uk/view8AD536EF-BC0D​​-427F-9F15-3A1BC663848E.htm ただし、GUIDは実際には128ビットの数値であり、さまざまな方法で表現できることを強調する必要があります。

6
tofutim

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))
{
...
}
4
Doug Clutter

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

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
a4bike

http://en.wikipedia.org/wiki/Globally_unique_identifier を参照してください

アルファが実際に存在するという保証はありません。

1
Ross

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

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