Heim > Backend-Entwicklung > C++ > Wie kann ich alphanumerische Zeichenfolgen mit numerischen Suffixen mithilfe von LINQ korrekt sortieren?

Wie kann ich alphanumerische Zeichenfolgen mit numerischen Suffixen mithilfe von LINQ korrekt sortieren?

Barbara Streisand
Freigeben: 2025-01-03 03:47:42
Original
757 Leute haben es durchsucht

How Can I Sort Alphanumeric Strings with Numeric Suffixes Correctly Using LINQ?

Alphanumerische Sortierung mit LINQ

Das Sortieren alphanumerischer Zeichenfolgen, bei denen jedes Element mit einem numerischen Wert endet, kann mit dem Standardsortiermechanismus von LINQ eine Herausforderung darstellen. Das Problem entsteht, wenn man sich ausschließlich auf die alphabetische Reihenfolge verlässt, was zu unerwarteten Sortierausgaben führt.

Betrachten Sie das folgende String-Array:

string[] partNumbers = new string[] { "ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11" };
Nach dem Login kopieren

Die direkte Anwendung der OrderBy-Methode von LINQ führt zu der folgenden sortierten Ausgabe:

AB1
Ab11
AB2
ABC1
ABC10
ABC10
ABC11
ABC2
Nach dem Login kopieren

Dieses Ergebnis weicht von der gewünschten Erwartung ab, da die Zahlenwerte am Ende nicht berücksichtigt werden richtig.

Lösung

Um die beabsichtigte Sortierung zu erreichen, ist es notwendig, die numerischen Teile der Zeichenfolgen im Sortierschlüssel aufzufüllen. Dies kann mit einer benutzerdefinierten Methode wie PadNumbers erreicht werden, die wie folgt definiert ist:

public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}
Nach dem Login kopieren

Diese Methode ersetzt jede numerische Sequenz in der Eingabezeichenfolge durch ihr aufgefülltes Äquivalent. Durch die Verwendung dieser Methode innerhalb der OrderBy-Klausel werden die numerischen Teile zum Vergleich effektiv normalisiert:

var result = partNumbers.OrderBy(x => PadNumbers(x));
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass die numerischen Werte unabhängig von ihrer Länge gleich behandelt werden, was zur gewünschten alphanumerischen Sortierung führt:

AB1
AB2
AB11
...
Nach dem Login kopieren

Während diese Lösung eine maximale Anzahl von Ziffern für Zahlen voraussetzt, bietet sie eine robuste Methode für die alphanumerische Sortierung LINQ.

Das obige ist der detaillierte Inhalt vonWie kann ich alphanumerische Zeichenfolgen mit numerischen Suffixen mithilfe von LINQ korrekt sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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