如何确定一个字符串是否包含GUID而不是一个数字字符串。
一个GUID是否总是至少包含1个字母字符?
Answers:
看看这些是否有帮助:-
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/zh-CN/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个字符的十六进制字符串表示。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
不能保证会有一个alpha。
如果(MyGuid!= Guild.Empty)
{
//有效的公会
}
其他{
//无效的公会
}