Gibt es eine einfache Möglichkeit zum Sortieren einer Liste anhand des 4. Zeichens einer Zeichenfolge? Ich habe eine Liste von Ländern mit Codes davor; "us united states" ist eine Zeichenfolge in meiner Liste und ich möchte die Codes ("uns") vor dem vollständigen Ländernamen ignorieren.Sortieren einer Liste nach dem n-ten Zeichen einer Zeichenfolge C#
1
A
Antwort
3
list.Sort((x, y) => x.Substring(3).CompareTo(y.Substring(3)));
0
Dies sollte es tun - List<string>
ist Ihre ursprüngliche Liste Variable
[List<string>].OrderBy(s => s.Substring(3)).ToList();
Dies funktioniert
var l = new List<string>(){"us unites states","uk united kingdom","ca canada"};
foreach (var s in l.OrderBy(s => s.ToLower().Substring(3)).ToList())
Console.WriteLine(s);
Hinweis ToLower
, so dass Sie Großbuchstaben nicht vergleichen Kleinbuchstaben (Wenn Sie beide haben)
1
Im Gegensatz zu den anderen Antworten, diese Art von performi ng die Art wird nicht unnötige Teilstrings erstellen. Stattdessen nutzt es die vorhandene string.Compare(strA, indexA, strB, indexB, length) Überladung, die String-Offsets für den Vergleich akzeptiert.
list.Sort((s1, s2) => string.Compare(s1, 3, s2, 3, int.MaxValue));
Es gibt andere nützliche string.Compare
Überlastungen, die auch Offsetwerte annehmen, dass Sie das Vergleichsverhalten zu optimieren, nutzen können. (z. B .: Ignorieren von Fällen usw.)
Verwandte Themen
- 1. Python: Wie Liste nach dem letzten Zeichen der Zeichenfolge sortieren
- 2. Liste nach einer anderen sortieren?
- 3. Zeichenfolge abschneiden und Wort nach dem nten Wort hinzufügen
- 4. Sortieren einer Liste nach einer Immobilie java
- 5. Sortieren numerisch nach einem Teil einer Zeichenfolge
- 6. Sortieren einer Liste von LIst nach dem Wert der Unterliste
- 7. Sortieren nach SQL mit einer Zeichenfolge
- 8. Sortieren einer Liste nach zwei Variablen
- 9. Sortieren einer Liste von Objekten nach Datum
- 10. Suche nach Zeichen in einer Zeichenfolge in C
- 11. Abrufen einer Zeichenfolge aus der URL nach einem Zeichen C#
- 12. Methode zum Sortieren einer Liste in C#
- 13. Vergleichen einer Zeichenfolge mit einer Liste von Zeichen
- 14. Sortieren einer Zeichenfolge in Javascript alphabetisch
- 15. Sortieren Zeichenfolge Liste mit Daten in C#
- 16. Sortieren einer Liste von der sortierten Reihenfolge einer anderen Liste
- 17. Zerlegen einer Zeichenfolge nach einer Liste von Indizes
- 18. Liste der Listen in R sortieren: Wert einer Liste je nach Wert der anderen Listen sortieren
- 19. Sortieren einer IList in C#
- 20. Sortieren einer Liste von benutzerdefinierten Objekten
- 21. Holen Sie die Zeichen nach dem letzten Index einer Teilzeichenfolge aus einer Zeichenfolge
- 22. Sortieren einer HashMap nach Datum
- 23. Sortieren mit einer Liste Iterator
- 24. Sortieren einer Liste aus einer anderen Liste IDs
- 25. Parsing einer Zeichenfolge in C++
- 26. Sortieren nach einer benutzerdefinierten Reihenfolge
- 27. Sortieren eines String-Arrays nach einer String-Position (C#)
- 28. Sortieren einer Datei nach dem Inhalt des Dateinamens
- 29. Sortieren einer Liste von numAlpha Strings
- 30. Sortieren einer Liste von Zeichenfolgen als Ganzzahlen in LINQ C#
+ 1 für die Verwendung vorhandener Vergleichsoperationen, ohne die Zeichenfolgenliterale zu ändern. Alles was ich hinzufügen würde ist eine Längenüberprüfung, um sicherzustellen, dass 's1' und' s2' beide mindestens 4 Zeichen lang sind (um eine mögliche 'ArgumentOutOfRangeException' zu vermeiden) –
@PhilGref Und was zu tun ist, wenn eine Zeichenkette kürzer als 3 Zeichen ist ? Sollte es ignoriert werden oder dazu führen, dass eine benutzerdefinierte Ausnahme ausgelöst oder ein Warnhinweis gesetzt wird? Ohne es zu wissen, könnte es eine bessere Option sein, die Standardfehlerbehandlung beizubehalten. – AlexD