Wie Sortiere ich ein string-array alphabetisch nach Länge?
Durch die alphabetisch von der Länge meine ich wie folgt:
gegeben:
{ "=", "==>>", "=>>", "=>", "!>" }
Ich raus will:
!>
=
=>
=>>
==>>
Ich bin derzeit nur mit OrderBy(x => x.Länge).ToArray()
jemand ne bessere lambda?
Ist dies vernünftigerweise möglich ist? lol, ich bin mir nicht sicher, was die Regel-Konventionen wäre hier 🙁
- "Alphabetisch nach Länge", bedeutet das nichts. Sie können die Sortierung alphabetisch, oder Sie können Sie Sortieren durch Länge. Oder, Sie können die Art von und dann Sortieren nach der anderen, wenn die erste Art, sagt, dass Sie gleich sind. In Ihrem Beispiel, Sie scheinen zu Sortieren, ausschließlich alphabetisch.
- Können Sie erklären, warum Sie möchten, dass Ergebnis? Warum sollte "!>" vor "=", auch wenn es länger?
- Ist das, was Sie wirklich wollen, zu Sortieren, alphabetisch nach dem ersten Zeichen und dann durch die Länge danach?
- Nur aus Neugier, was ist die Anwendung dieser code?
- Befehlszeile aufgefordert, für die unterschiedlichen Zugriffs-Ebenen, aber ich bin ehrlich gesagt nur zu schreiben, ein "Lesen bis die Antwort ist gefunden" serielle Kommunikation-Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie Ihre eigene string-comparer können Sie dies tun, die erfüllt beide Anforderungen die du gepostet hast.
einen bcde bcd b bced cb
ergeben würde:
a b bcd bcde bced cb
und { "=", "==>>", "=>>", "=>", "!>" }
ergibt:
durch aufrufen:
myStringCollection.OrderBy(x=>x, new MyStringComparer).ToArray();
Ich glaube nicht, dass die Sortierung, die Sie versuchen zu tun, ist anders als ein standard-Wörterbuch Art, es sei denn, ich bin fehlt etwas.
Wenn Sie möchten, zu Sortieren, die von Alpha dann durch die Länge, die OrderBy und ThenBy Methoden:
Ich bin mit einer Liste und ich habe versucht, online-Suche nach einer Lösung für dieses. Nichts, ich fand für mich gearbeitet. Ich entschieden, um eine Methode zu erstellen, die sortiert die Elemente von der Länge. Sortieren Sie zuerst nach alphabetischer Reihenfolge verwende ich eine collection Sortieren.
Können Sie verwenden Sie folgenden im array sortiert. Hier bin ich Sortier das array mit den mittleren Buchstaben.
Ich denke, das wird helfen.
Versuchte ich
OrderBy(x => x)
mit den test-Daten, die Sie bereitgestellt, und das erzeugt genau die Ausgabe, die Sie wollen.Wenn er ein array, dass Sie aus starten, können Sie einfach die
Array.Sort
Methode:Edit:
Das gilt nicht für die neuen Daten, die Sie haben in der Frage. Warten auf eine Klärung über die Daten (wie kommentierte auf die Frage).
Ich bin mir nicht ganz im klaren über Ihre Frage, aber es scheint, Sie Sortieren möchten Erstens durch die string-Länge, dann durch die alphabetische position.
Könnten Sie versuchen, dies als eine LINQ Lösung:
Wenn Sie wollen eine (nicht mehr effizienten) Lösung, die nicht die Verwendung von LINQ (obwohl immer noch macht schön Gebrauch von lambda-Ausdrücken), können Sie Folgendes versuchen:
Hoffe, das hilft.
Mit einem standard-string-compare-Funktion für die Sortierung sollte genau das tun.
strncmp() in C
String.compare() in C++
String.compareTo() in der Java
alle Arbeit für diesen Zweck.