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;
}