Line Sorter
Sorteer regels alfabetisch, op lengte, omgekeerd of willekeurig
Invoerregels
Gesorteerde regels
Wat is regels sorteren?
Regels sorteren is het herordenen van de regels in een tekstblok op basis van een specifieke regel: alfabetische volgorde, omgekeerde volgorde, regellengte of een willekeurige schudding. Online regels sorteren is een veelvoorkomende taak bij het werken met logbestanden, CSV-data, configuratielijsten of elke platte-tekstinhoud waarbij volgorde van belang is. De bewerking splitst tekst op nieuweregelstekens, past een vergelijkingsfunctie toe op de resulterende array en voegt de gesorteerde regels weer samen.
De meeste programmeertalen sorteren tekenreeksen standaard via lexicografische vergelijking, waarbij tekens worden vergeleken op hun Unicode-codepunten. Dit betekent dat hoofdletters vóór kleine letters worden gesorteerd ("Banaan" vóór "appel") en dat cijfers vóór letters komen. Locale-bewuste sortering, ook wel natural sort of collatie genoemd, verhelpt dit door taalspecifieke regels toe te passen. JavaScript's localeCompare(), Python's locale.strxfrm() en het POSIX sort-commando met LC_COLLATE bieden allemaal locale-bewuste ordening.
Sorteren op lengte is handig als je de kortste of langste vermeldingen in een lijst wilt vinden, uitschieters in loguitvoer wilt identificeren of items op complexiteit wilt ordenen. Omgekeerd sorteren draait de bestaande regelomsrekening om zonder te herordenen — dit verschilt van Z-A alfabetisch sorteren. Willekeurig schudden kent elke regel een willekeurige sorteersleutel toe, waardoor bij elke uitvoering een andere volgorde ontstaat. Schakelen tussen modi op dezelfde invoer is sneller dan elke keer een nieuw script schrijven.
Waarom deze Line Sorter gebruiken?
Plak je tekst, kies een sorteermodus en krijg het resultaat direct. Geen opdrachtregelinstellingen, geen scriptbestanden, geen package-installaties.
Toepassingen van de Line Sorter
Overzicht van sorteermodi
Deze tool ondersteunt zes sorteermodi. De tabel hieronder beschrijft elke modus, de vergelijkingsmethode die wordt gebruikt en een voorbeeldresultaat voor de invoerlijst: appel, banaan, kers, dadel, vijg.
| Modus | Beschrijving | JS-methode | Voorbeelduitvoer |
|---|---|---|---|
| A-Z | Alphabetical ascending | localeCompare() | apple, banana, cherry |
| Z-A | Alphabetical descending | localeCompare() reversed | cherry, banana, apple |
| Length (short) | Shortest line first | a.length - b.length | fig, date, apple, banana |
| Length (long) | Longest line first | b.length - a.length | banana, apple, date, fig |
| Reverse | Flip line order, no reordering | Array.reverse() | Last line becomes first |
| Random | Randomized comparator (biased) | Math.random() - 0.5 | Different every run |
Sorteeralgoritmen achter de schermen
Wanneer je Array.sort() in JavaScript aanroept, gebruikt de V8-engine (Chrome, Node.js) Timsort sinds 2019. Andere runtimes gebruiken andere algoritmen. De tabel hieronder vergelijkt de meest gebruikte sorteeralgoritmen in standaardbibliotheken van programmeertalen. Alle verwerken de regelsorteertaken in deze tool in minder dan een milliseconde voor typische invoer (minder dan 100.000 regels).
| Algoritme | Gebruikt door | Tijd | Opmerkingen |
|---|---|---|---|
| Timsort | Python, Java (Arrays.sort) | O(n log n) | Stable, fast on partially sorted data |
| Quicksort | C stdlib, V8 (older) | O(n log n) | In-place, unstable by default |
| Merge sort | Most stable-sort implementations | O(n log n) | Stable, predictable, uses extra memory |
| Introsort | C++ std::sort, .NET | O(n log n) | Hybrid: quicksort + heapsort fallback |
| Radix sort | Fixed-length keys, integers | O(nk) | Non-comparative, linear for short keys |
Codevoorbeelden
Sorteer regels programmatisch in JavaScript, Python, Go en op de opdrachtregel. Elk voorbeeld behandelt alfabetisch, op lengte en omgekeerd sorteren.
const text = `banana
apple
cherry
date
fig`
// Sort A-Z (locale-aware)
const az = text.split('\n').sort((a, b) => a.localeCompare(b)).join('\n')
// → "apple\nbanana\ncherry\ndate\nfig"
// Sort by line length, shortest first
const byLen = text.split('\n').sort((a, b) => a.length - b.length).join('\n')
// → "fig\ndate\napple\nbanana\ncherry"
// Reverse line order (no alphabetical sorting)
const reversed = text.split('\n').reverse().join('\n')
// → "fig\ndate\ncherry\napple\nbanana"
// Remove duplicates and sort
const unique = [...new Set(text.split('\n'))].sort().join('\n')text = """banana apple cherry date fig""" lines = text.splitlines() # Sort A-Z (case-insensitive) az = sorted(lines, key=str.lower) # → ['apple', 'banana', 'cherry', 'date', 'fig'] # Sort by line length by_len = sorted(lines, key=len) # → ['fig', 'date', 'apple', 'banana', 'cherry'] # Reverse original order rev = lines[::-1] # → ['fig', 'date', 'cherry', 'apple', 'banana'] # Shuffle randomly import random random.shuffle(lines) # modifies in place
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
text := "banana\napple\ncherry\ndate\nfig"
lines := strings.Split(text, "\n")
// Sort A-Z
sort.Strings(lines)
fmt.Println(strings.Join(lines, "\n"))
// → apple\nbanana\ncherry\ndate\nfig
// Sort by length
sort.Slice(lines, func(i, j int) bool {
return len(lines[i]) < len(lines[j])
})
fmt.Println(strings.Join(lines, "\n"))
// → fig\ndate\napple\nbanana\ncherry
}# Sort lines A-Z
sort file.txt
# Sort lines Z-A (reverse)
sort -r file.txt
# Sort numerically (first field)
sort -n data.txt
# Sort by line length (awk + sort + cut)
awk '{ print length, $0 }' file.txt | sort -n | cut -d' ' -f2-
# Shuffle lines randomly
shuf file.txt # GNU coreutils
sort -R file.txt # alternative (not truly uniform)
# Sort and remove duplicates
sort -u file.txt