文字列にGUIDが含まれるか、数値の文字列のみが含まれるかを判断する方法。
GUIDには常に少なくとも1つの英字が含まれますか?
回答:
これらが役立つかどうかを確認してください:-
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であるかどうかをテストしているだけのときは、不要な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))
{
...
}
return Guid.TryParse(value, out var _);
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ビットの数値であり、さまざまな方法で表すことができることを強調しておく必要があります。
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;
}
}
受け入れられた回答に基づいて、次のように拡張メソッドを作成しました。
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を参照してください
アルファが実際に存在するという保証はありません。