Heim >Backend-Entwicklung >C++ >Wie kann die OrderBy-Methode von LINQ für die korrekte alphanumerische Sortierung von Zeichenfolgen mit Zahlen verwendet werden?

Wie kann die OrderBy-Methode von LINQ für die korrekte alphanumerische Sortierung von Zeichenfolgen mit Zahlen verwendet werden?

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 20:51:16885Durchsuche

How Can LINQ's OrderBy Method Be Used for Correct Alphanumeric Sorting of Strings Containing Numbers?

Alphanumerische Sortierung mit LINQ: Den Einfluss numerischer Werte verstehen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn