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
Freigeben: 2024-12-27 20:51:16
Original
943 Leute haben es durchsucht

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"]
Nach dem Login kopieren

Mit der OrderBy-Methode von LINQ wird das gewünschte Sortierergebnis erzielt ist:

["AB1", "AB2", "AB11", ... ]
Nach dem Login kopieren
Nach dem Login kopieren

Problem:

Der Standardsortiermechanismus betrachtet Zahlen jedoch als Zeichenfolgen, was zu der folgenden Ausgabe führt:

["AB1", "Ab11", "AB2", "ABC1", "ABC10", "ABC10", "ABC11", "ABC2"]
Nach dem Login kopieren

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));
Nach dem Login kopieren

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'));
}
Nach dem Login kopieren

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", ... ]
Nach dem Login kopieren
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage