Heim >Backend-Entwicklung >C++ >Wie kann die OrderBy-Methode von LINQ für die korrekte alphanumerische Sortierung von Zeichenfolgen mit Zahlen verwendet werden?
Problem:
Gegeben ist ein Array von Zeichenfolgen, in denen jedes Element endet Bei einem numerischen Wert besteht das Ziel darin, das Array alphanumerisch zu sortieren und dabei die numerische Reihenfolge innerhalb jedes Arrays zu priorisieren Element.
Beispiel:
Betrachten Sie das String-Array:
partNumbers = ["ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11"]
Mit der OrderBy-Methode von LINQ wird das gewünschte Sortierergebnis erzielt ist:
["AB1", "AB2", "AB11", ... ]
Problem:
Der Standardsortiermechanismus betrachtet Zahlen jedoch als Zeichenfolgen, was zu der folgenden Ausgabe führt:
["AB1", "Ab11", "AB2", "ABC1", "ABC10", "ABC10", "ABC11", "ABC2"]
Lösung:
Um dieses Problem zu beheben, ist ein Pad erforderlich der numerische Teil der Zeichenfolgen in der Bestellklausel. Auf diese Weise betrachtet OrderBy die Zahlen als solche und nicht als Zeichenfolgen. Der folgende Codeausschnitt demonstriert diesen Ansatz:
var result = partNumbers.OrderBy(x => PadNumbers(x));
PadNumbers-Methode:
Die PadNumbers-Methode wird wie folgt implementiert:
public static string PadNumbers(string input) { return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0')); }
Erklärung:
Diese Methode identifiziert und füllt alle auf Zahlenfolgen in der Eingabezeichenfolge mit Nullen, wobei eine maximale Ziffernlänge von 10 angenommen wird. Durch diese Auffüllung wird sichergestellt, dass die Zahlenwerte während des Bestellvorgangs als Zahlen behandelt werden, während die ursprünglichen Zeichenfolgendaten erhalten bleiben.
Ausgabe:
Mit der PadNumbers-Methode wird das Array korrekt sortiert als:
["AB1", "AB2", "AB11", ... ]
Durch die Anwendung dieser Auffülltechnik können Sie mit LINQ eine genaue alphanumerische Sortierung erreichen, bei der numerische Werte innerhalb jedes Elements priorisiert werden.
Das obige ist der detaillierte Inhalt vonWie kann die OrderBy-Methode von LINQ für die korrekte alphanumerische Sortierung von Zeichenfolgen mit Zahlen verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!