System.Xml.Xsl.Runtime.XsltFunctions.MSStringCompare C# (CSharp) Method

MSStringCompare() public static method

public static MSStringCompare ( string s1, string s2, string lang, string options ) : double
s1 string
s2 string
lang string
options string
return double
        public static double MSStringCompare(string s1, string s2, string lang, string options)
        {
            CultureInfo cultinfo = GetCultureInfo(lang);
            CompareOptions opts = CompareOptions.None;
            bool upperFirst = false;
            for (int idx = 0; idx < options.Length; idx++)
            {
                switch (options[idx])
                {
                    case 'i':
                        opts = CompareOptions.IgnoreCase | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth;
                        break;
                    case 'u':
                        upperFirst = true;
                        break;
                    default:
                        upperFirst = true;
                        opts = CompareOptions.IgnoreCase;
                        break;
                }
            }

            if (upperFirst)
            {
                if (opts != CompareOptions.None)
                {
                    throw new XslTransformException(SR.Xslt_InvalidCompareOption, options);
                }
                opts = CompareOptions.IgnoreCase;
            }

            int result = cultinfo.CompareInfo.Compare(s1, s2, opts);
            if (upperFirst && result == 0)
            {
                result = -cultinfo.CompareInfo.Compare(s1, s2, CompareOptions.None);
            }
            return result;
        }