private static unsafe int CompareStringOrdinalAscii(char *s1, int count1, char *s2, int count2, bool ignoreCase) { int countMin = Math.Min(count1, count2); { for (int i = 0; i < countMin; i++) { char c1 = ignoreCase ? TextInfo.ChangeCaseAscii(s1[i]) : s1[i]; char c2 = ignoreCase ? TextInfo.ChangeCaseAscii(s2[i]) : s2[i]; if (c1 < c2) { return(-1); } else if (c1 > c2) { return(1); } } } if (count1 == count2) { return(0); } if (count1 > count2) { return(1); } return(-1); }
private unsafe int GetHashCodeOfStringCore(string source, CompareOptions options) { Contract.Assert(source != null); Contract.Assert((options & (CompareOptions.Ordinal | CompareOptions.OrdinalIgnoreCase)) == 0); // TODO: Implement This Fully. int hash = 5381; unchecked { for (int i = 0; i < source.Length; i++) { hash = ((hash << 5) + hash) + TextInfo.ChangeCaseAscii(source[i]); } } return(hash); }
// PAL ends here private static bool StringEqualsAscii(string s1, string s2, bool ignoreCase = true) { if (s1.Length != s2.Length) { return(false); } for (int i = 0; i < s1.Length; i++) { char c1 = ignoreCase ? TextInfo.ChangeCaseAscii(s1[i]) : s1[i]; char c2 = ignoreCase ? TextInfo.ChangeCaseAscii(s2[i]) : s2[i]; if (c1 != c2) { return(false); } } return(true); }