วิธีตรวจสอบว่าสตริงมี GUID เทียบกับสตริงตัวเลขหรือไม่
GUID จะมีอักขระอัลฟ่าอย่างน้อย 1 ตัวเสมอหรือไม่
วิธีตรวจสอบว่าสตริงมี 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
bool isValid = Guid.TryParse(inputString, out var tempGuid);
หรือbool isValid = Guid.TryParse(inputString, out _);
เมื่อฉันแค่ทดสอบสตริงเพื่อดูว่าเป็น 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 อักขระ GUID (ในรูปเลขฐานสิบหก) ไม่จำเป็นต้องมีอักขระอัลฟาใด ๆ แม้ว่าจะเป็นไปโดยบังเอิญก็ตาม หากคุณกำหนดเป้าหมาย 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
ไม่มีการรับประกันว่าอัลฟ่าจะอยู่ที่นั่นจริง
จะส่งคืน Guid หากเป็น Guid ที่ถูกต้องมิฉะนั้นจะส่งคืน Guid.Empty
if (!Guid.TryParse(yourGuidString, out yourGuid)){
yourGuid= Guid.Empty;
}
ถ้า (MyGuid! = Guild.Empty)
{
// กิลด์ที่ถูกต้อง
}
else {
// กิลด์ไม่ถูกต้อง
}
ใช้ฟังก์ชันมาตรฐานตัวสร้าง 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