Maison > développement back-end > Golang > Comment obtenir un tri insensible à la casse des listes de chaînes dans Go ?

Comment obtenir un tri insensible à la casse des listes de chaînes dans Go ?

Mary-Kate Olsen
Libérer: 2024-10-28 06:57:29
original
1036 Les gens l'ont consulté

How to Achieve Case-Insensitive Sorting of String Lists in Go?

Tri insensible à la casse à l'aide de sort.Strings() dans Go

Pour le tri insensible à la casse des listes de chaînes dans Go, envisagez d'utiliser le tri. Slice(), qui offre une plus grande flexibilité que sort.Strings().

Fonction personnalisée pour une comparaison insensible à la casse

Vous pouvez transmettre une fonction personnalisée à sort.Slice () pour effectuer des comparaisons insensibles à la casse. La fonction suivante convertit les chaînes en minuscules avant de les comparer :

<code class="go">func lowercaseCompare(s1, s2 string) bool {
    return strings.ToLower(s1) < strings.ToLower(s2)
}</code>
Copier après la connexion

Application de la fonction personnalisée

Pour trier les données de la liste sans tenir compte de la casse à l'aide de la fonction personnalisée :

<code class="go">sort.Slice(data, lowercaseCompare)</code>
Copier après la connexion

Exemple

Considérez les données de la liste de chaînes := []string{"A", "b", "D", "c"}. Le trier sans tenir compte de la casse à l'aide de la fonction personnalisée produit le résultat ["A", "b", "c", "D"].

Tri efficace sans tenir compte de la casse

L'approche ci-dessus alloue deux nouvelles chaînes pour chaque comparaison. Pour les grandes listes de chaînes, cela peut s'avérer inefficace. Pour améliorer les performances, envisagez une comparaison rune par rune :

<code class="go">func runeCompare(a, b string) bool {
    for {
        r1, s1 := utf8.DecodeRuneInString(a)
        r2, s2 := utf8.DecodeRuneInString(b)
        if r1 == utf8.RuneError || r1 == r2 {
            return s1 < s2
        }
        a = a[s1:]
        b = b[s2:]
    }
}</code>
Copier après la connexion

Tri efficace avec runeCompare()

Pour trier les données efficacement :

<code class="go">sort.Slice(data, runeCompare)</code>
Copier après la connexion

Solution alternative : package collate

Pour un tri spécifique à une langue ou à une culture, envisagez d'utiliser le package collate. Il fournit des capacités de tri adaptées aux paramètres régionaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal