예제 #1
0
        public static bool IsValidLanguageID(char[] value, int startPos, int length)
        {
            int len = length;

            if (len < 2)
            {
                return(false);
            }

            bool        fSeenLetter = false;
            int         i           = startPos;
            XmlCharType xmlCharType = XmlCharType.Instance;

            char ch = value[i];

            if (xmlCharType.IsLetter(ch))
            {
                if (xmlCharType.IsLetter(value[++i]))
                {
                    if (len == 2)
                    {
                        return(true);
                    }
                    len--;
                    i++;
                }
                else if (('I' != ch && 'i' != ch) && ('X' != ch && 'x' != ch))
                {  //IANA or custom Code
                    return(false);
                }

                if (value[i] != '-')
                {
                    return(false);
                }

                len -= 2;
                while (len-- > 0)
                {
                    ch = value[++i];
                    if (xmlCharType.IsLetter(ch))
                    {
                        fSeenLetter = true;
                    }
                    else if (ch == '-' && fSeenLetter)
                    {
                        fSeenLetter = false;
                    }
                    else
                    {
                        return(false);
                    }
                }
                if (fSeenLetter)
                {
                    return(true);
                }
            }
            return(false);
        }