Guid.Parse 这个有的吧那就自己写一个tryparse的:
bool tryparse(string s, out guid g)
{
    bool isok = false;
    try
    {
        g = Guid.Parse(s);
    }
    catch
    {
        return false;
    }
    return true;
}

解决方案 »

  1.   


     Guid.Parse(s);
    .NET3.5 不支持 Guid.Parse 的
      

  2.   

    用正则呗,这个应该通用了吧  static bool IsGuid(string strSrc)
            {            Regex reg = new Regex("^[A-F0-9]{8}(-[A-F0-9]{4}){3}-[A-F0-9]{12}$", RegexOptions.Compiled);            return reg.IsMatch(strSrc);        }
      

  3.   

    这是他里面的算法,自己改一下吧 int num2;
        long num3;
        int num = 0;
        int parsePos = 0;
        if (guidString[0] == '{')
        {
            if ((guidString.Length != 0x26) || (guidString[0x25] != '}'))
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidInvLen");
                return false;
            }
            num = 1;
        }
        else if (guidString[0] == '(')
        {
            if ((guidString.Length != 0x26) || (guidString[0x25] != ')'))
            {
                result.SetFailure(ParseFailureKind.Format, "Format_GuidInvLen");
                return false;
            }
            num = 1;
        }
        else if (guidString.Length != 0x24)
        {
            result.SetFailure(ParseFailureKind.Format, "Format_GuidInvLen");
            return false;
        }
        if (((guidString[8 + num] != '-') || (guidString[13 + num] != '-')) || ((guidString[0x12 + num] != '-') || (guidString[0x17 + num] != '-')))
        {
            result.SetFailure(ParseFailureKind.Format, "Format_GuidDashes");
            return false;
        }
        parsePos = num;
        if (!StringToInt(guidString, ref parsePos, 8, 0x2000, out num2, ref result))
        {
            return false;
        }
        result.parsedGuid._a = num2;
        parsePos++;
        if (!StringToInt(guidString, ref parsePos, 4, 0x2000, out num2, ref result))
        {
            return false;
        }
        result.parsedGuid._b = (short) num2;
        parsePos++;
        if (!StringToInt(guidString, ref parsePos, 4, 0x2000, out num2, ref result))
        {
            return false;
        }
        result.parsedGuid._c = (short) num2;
        parsePos++;
        if (!StringToInt(guidString, ref parsePos, 4, 0x2000, out num2, ref result))
        {
            return false;
        }
        parsePos++;
        num = parsePos;
        if (!StringToLong(guidString, ref parsePos, 0x2000, out num3, ref result))
        {
            return false;
        }
        if ((parsePos - num) != 12)
        {
            result.SetFailure(ParseFailureKind.Format, "Format_GuidInvLen");
            return false;
        }
        result.parsedGuid._d = (byte) (num2 >> 8);
        result.parsedGuid._e = (byte) num2;
        num2 = (int) (num3 >> 0x20);
        result.parsedGuid._f = (byte) (num2 >> 8);
        result.parsedGuid._g = (byte) num2;
        num2 = (int) num3;
        result.parsedGuid._h = (byte) (num2 >> 0x18);
        result.parsedGuid._i = (byte) (num2 >> 0x10);
        result.parsedGuid._j = (byte) (num2 >> 8);
        result.parsedGuid._k = (byte) num2;
        return true;