Cara menentukan apakah suatu string berisi GUID vs hanya serangkaian angka.
akankah GUID selalu berisi setidaknya 1 karakter alfa?
Jawaban:
Lihat apakah ini membantu: -
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
bool isValid = Guid.TryParse(inputString, out var tempGuid);
ataubool isValid = Guid.TryParse(inputString, out _);
Saat saya hanya menguji string untuk melihat apakah itu GUID, saya tidak benar-benar ingin membuat objek Guid yang tidak saya perlukan. Begitu...
public static class GuidEx
{
public static bool IsGuid(string value)
{
Guid x;
return Guid.TryParse(value, out x);
}
}
Dan inilah cara Anda menggunakannya:
string testMe = "not a guid";
if (GuidEx.IsGuid(testMe))
{
...
}
return Guid.TryParse(value, out var _);
GUID adalah angka 16-byte (128-bit), biasanya diwakili oleh string heksadesimal 32 karakter. GUID (dalam bentuk hex) tidak perlu mengandung karakter alfa, meskipun secara kebetulan itu mungkin. Jika Anda menargetkan GUID dalam bentuk hex, Anda dapat memeriksa bahwa string tersebut memiliki panjang 32 karakter (setelah menghilangkan tanda hubung dan tanda kurung kurawal) dan hanya memiliki huruf AF dan angka.
Ada gaya penyajian GUID tertentu (penempatan tanda hubung) dan ekspresi reguler dapat digunakan untuk memeriksanya, misalnya,
@"^(\{{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})$"
dari http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm . Yang mengatakan, harus ditekankan bahwa GUID benar-benar merupakan angka 128-bit dan dapat direpresentasikan dalam beberapa cara berbeda.
Tidak ada jaminan bahwa GUID berisi karakter alfa. FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
adalah GUID yang valid 00000000-0000-0000-0000-000000000000
dan apa pun di antaranya.
Jika Anda menggunakan .NET 4.0, Anda dapat menggunakan jawaban di atas untuk Guid.Parse dan Guid.TryParse. Jika tidak, Anda dapat melakukan sesuatu seperti ini:
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;
}
}
Berdasarkan jawaban yang diterima, saya membuat metode Ekstensi sebagai berikut:
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;
}
Di mana "MagicNumbers.defaultGuid" hanyalah "kosong" semua Panduan nol "00000000-0000-0000-0000-000000000000".
Dalam kasus saya, mengembalikan nilai itu sebagai hasil dari konversi ToGuid yang tidak valid bukanlah masalah.
lihat http://en.wikipedia.org/wiki/Globally_unique_identifier
Tidak ada jaminan bahwa alpha benar-benar akan ada.
jika (MyGuid! = Guild.Empty)
{
// Guild yang valid
}
lain {
// Guild tidak valid
}
Gunakan fungsionalitas standar konstruktor 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