Bir dizenin bir GUID içerip yalnızca bir sayı dizesi içerip içermediğini belirleme.
bir GUID her zaman en az 1 alfa karakter içerecek mi?
Yanıtlar:
Bunların yardımcı olup olmadığına bakın: -
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);
veyabool isValid = Guid.TryParse(inputString, out _);
Bir GUID olup olmadığını görmek için sadece bir dizeyi test ettiğimde, gerçekten ihtiyacım olmayan bir Guid nesnesi oluşturmak istemiyorum. Yani...
public static class GuidEx
{
public static bool IsGuid(string value)
{
Guid x;
return Guid.TryParse(value, out x);
}
}
Ve işte bunu nasıl kullanacağınız:
string testMe = "not a guid";
if (GuidEx.IsGuid(testMe))
{
...
}
return Guid.TryParse(value, out var _);
Bir GUID, genellikle 32 karakterlik onaltılık bir dizeyle gösterilen 16 baytlık (128 bit) bir sayıdır. Bir GUID'in (onaltılık formda) herhangi bir alfa karakter içermesi gerekmez, ancak şans eseri muhtemelen olabilir. Bir GUID'i onaltılık biçimde hedefliyorsanız, dizenin 32 karakter uzunluğunda olduğunu (kısa çizgiler ve süslü parantezler çıkarıldıktan sonra) ve yalnızca AF ve rakamlar içerdiğini kontrol edebilirsiniz.
GUID'leri sunmanın belirli bir tarzı vardır (kısa çizgi yerleştirme) ve bunu kontrol etmek için düzenli ifadeler kullanılabilir, örneğin,
@"^(\{{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})$"
dan http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm . Bununla birlikte, GUID'in gerçekten 128 bitlik bir sayı olduğu ve birkaç farklı şekilde gösterilebileceği vurgulanmalıdır.
Bir GUID'in alfa karakterler içerdiğinin garantisi yoktur. FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
geçerli bir GUID yani 00000000-0000-0000-0000-000000000000
ve aradaki her şey.
.NET 4.0 kullanıyorsanız, Guid.Parse ve Guid. TryParse için yukarıdaki yanıtı kullanabilirsiniz. Aksi takdirde, şöyle bir şey yapabilirsiniz:
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;
}
}
Kabul edilen cevaba göre aşağıdaki gibi bir Uzantı yöntemi oluşturdum:
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" sadece "boş" tamamen sıfır Guid "00000000-0000-0000-0000-000000000000" dür.
Benim durumumda, geçersiz bir ToGuid dönüşümünün sonucu olarak bu değeri döndürmek bir sorun değildi.
bkz. http://en.wikipedia.org/wiki/Globally_unique_identifier
Bir alfa'nın gerçekten orada olacağının garantisi yoktur.
eğer (MyGuid! = Guild.Empty)
{
// Geçerli Lonca
}
Başka {
// Geçersiz Lonca
}
GUID yapıcı standart işlevini kullanın
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