如何确定一个字符串是否包含 GUID,而不仅仅是一个数字字符串。
GUID 是否总是包含至少1个字母字符?
看看这些是否有帮助:-
Guid.Parse
Guid guidResult = Guid.Parse(inputString)
Guid.TryParse
bool isValid = Guid.TryParse(inputString, out guidOutput)
GUID 是一个16字节(128位)的数字,通常由32个字符的十六进制字符串表示。GUID (十六进制形式)不需要包含任何字母字符,尽管偶尔可能会包含。如果您的目标是十六进制形式的 GUID,您可以检查字符串是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})$"
从 http://www.geekzilla.co.uk/view8AD536EF-BC0D-427F-9F15-3A1BC663848E.htm。也就是说,应该强调的是 GUID 实际上是一个128位的数字,可以用许多不同的方式表示。
见 http://en.wikipedia.org/wiki/Globally_unique_identifier
不能保证字母真的会出现。
不能保证 GUID 包含字母字符。FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF是一个有效的 GUID,00000000-0000-0000-0000-000000000000和其他介于两者之间的 GUID 也是如此。
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
00000000-0000-0000-0000-000000000000
如果你正在使用。NET 4.0,你可以使用上面的答案为指南。Parse 和 Guid。尝试解析。否则,你可以这样做:
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; } }
将返回有效的 Guid,否则将返回 Guid
if (!Guid.TryParse(yourGuidString, out yourGuid)){ yourGuid= Guid.Empty; }
根据已接受的答案,我创建了一个扩展方法,如下所示:
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“0000000-0000-0000-000000000000”。
在我的例子中,作为无效 ToGuid 转换的结果返回该值不是问题。
当我只是测试一个字符串以确定它是否是一个 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)) { ... }
使用 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
if(MyGuid != Guid.Empty) { // Valid Guid } else { // Invalid Guid }
这是一个相当干净的、现代的 C # 方法,它抑制 out 变量:
var isValid = Guid.TryParse(inputString, out _);