String.comparison Performance (mit Beschnitt)

Ich muss eine Menge leistungsfähiger Zeichenfolgenvergleiche durchführen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird, und mir wurde klar, dass meine Vorgehensweise bei .ToLower (). Trim () wirklich dumm war, da alle neuen Zeichenfolgen zugewiesen wurden

Also habe ich ein bisschen herumgebuddelt und dieser Weg scheint mir vorzuziehen:

String.Compare(txt1,txt2, StringComparison.OrdinalIgnoreCase)

Das einzige Problem hier ist, dass ich führende oder nachfolgende Leerzeichen, dh Trim (), ignorieren möchte, aber wenn ich Trim verwende, habe ich das gleiche Problem mit der String-Zuweisung. Ich schätze, ich könnte jede Zeichenfolge überprüfen und sehen, ob sie mit StartsWith ("") oder EndsWith ("") beginnt und erst dann trimmt. Entweder das, oder Sie ermitteln den Index, die Länge für jeden String und übergeben ihn an string.Compare override

public static int Compare
(
    string strA,
    int indexA,
    string strB,
    int indexB,
    int length,
    StringComparison comparisonType
) 

aber das scheint ziemlich chaotisch zu sein und ich muss wahrscheinlich einige ganze Zahlen verwenden, wenn ich nicht für jede Kombination von abschließenden und führenden Leerzeichen auf beiden Zeichenfolgen eine wirklich große if-else-Aussage machen möchte ... also irgendwelche Ideen für eine elegante Lösung?

Hier ist mein aktueller Vorschlag:

public bool IsEqual(string a, string b)
    {
        return (string.Compare(a, b, StringComparison.OrdinalIgnoreCase) == 0);
    }

    public bool IsTrimEqual(string a, string b)
    {
        if (Math.Abs(a.Length- b.Length) > 2 ) // if length differs by more than 2, cant be equal
        {
            return  false;
        }
        else if (IsEqual(a,b))
        {
            return true;
        }
        else 
        {
            return (string.Compare(a.Trim(), b.Trim(), StringComparison.OrdinalIgnoreCase) == 0);
        }
    }

Antworten auf die Frage(8)

Ihre Antwort auf die Frage