我已經定製IComparer<string>
,我用比較字符串忽略他們的情況和符號這樣的:我可以獲得用於與CompareOptions比較的結果字符串嗎?
public class LiberalStringComparer : IComparer<string>
{
private readonly CompareInfo _compareInfo = CultureInfo.InvariantCulture.CompareInfo;
private const CompareOptions COMPARE_OPTIONS = CompareOptions.IgnoreSymbols | CompareOptions.OrdinalIgnoreCase;
public int Compare(string x, string y)
{
if (x == null) return -1;
if (y == null) return 1;
return this._compareInfo.Compare(x, y, COMPARE_OPTIONS);
}
}
我能獲得輸出字符串是,最終用於比較?
我的最終目標是生產和IEqualityComparer<string>
,它忽略符號和套管的方式與此比較器相同。
我可以編寫正則表達式來做到這一點,但不能保證我的正則表達式將使用與內置比較選項相同的邏輯。
如果你有興趣,在短短'Equals'你可以做'yourComparer.Compare(X,Y)== 0' –
@SriramSakthivel是的,但不符合的所有要求' IEqualityComparer' ...我仍然需要'GetHashCode' – Matthew
是否有可能在比較它們之前,以某種方式*將字符串解析爲新的一致結構(或轉換爲一致的字符串類型)?它會使所有這些在概念上更簡單。 –