Heim > Backend-Entwicklung > Golang > Wie kann ich in Go mit der Funktion „sort.Strings()' eine Sortierung von Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen?

Wie kann ich in Go mit der Funktion „sort.Strings()' eine Sortierung von Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen?

DDD
Freigeben: 2024-10-28 02:24:01
Original
212 Leute haben es durchsucht

How can I perform case-insensitive sorting of strings in Go using the `sort.Strings()` function?

Groß-/Kleinschreibung beim Sortieren mit sort.Strings() in Go

In Go ist es möglich, eine Liste von Zeichenfolgen nach Groß-/Kleinschreibung zu sortieren -unempfindliche Weise mithilfe der Funktion sort.Strings() mit einer benutzerdefinierten Vergleichsfunktion. Diese benutzerdefinierte Funktion vergleicht Zeichenfolgen anhand der Ergebnisse der Konvertierung der Zeichenfolgen in Kleinbuchstaben.

Beispiel:

<code class="go">data := []string{"A", "b", "D", "c"}
sort.Strings(data) // Default case-sensitive sorting
fmt.Println(data) // Output: [A b c D]</code>
Nach dem Login kopieren

Um eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung zu erreichen, können wir die benutzerdefinierte Funktion definieren Funktion wie folgt:

<code class="go">sort.Slice(data, func(i, j int) bool {
    return strings.ToLower(data[i]) < strings.ToLower(data[j])
})</code>
Nach dem Login kopieren

Diese Funktion wandelt beide Zeichenfolgen vor dem Vergleich in Kleinbuchstaben um, was zu einer Sortierreihenfolge ohne Berücksichtigung der Groß- und Kleinschreibung führt.

Ausführen des aktualisierten Codes:

<code class="go">data := []string{"A", "b", "D", "c"}
sort.Slice(data, func(i, j int) bool {
    return strings.ToLower(data[i]) < strings.ToLower(data[j])
})
fmt.Println(data) // Output: [A b c D]</code>
Nach dem Login kopieren

Alternativen:

Obwohl der obige Ansatz effektiv ist, kann er bei Vergleichen String-Zuweisungen beinhalten. Um Zuordnungen zu vermeiden, besteht ein alternativer Ansatz darin, Zeichenfolgen Rune für Rune zu vergleichen und dabei jede Rune in Kleinbuchstaben umzuwandeln:

<code class="go">func lessLower(sa, sb string) bool {
    for {
        rb, nb := utf8.DecodeRuneInString(sb)
        if nb == 0 {
            return false
        }
        ra, na := utf8.DecodeRuneInString(sa)
        if na == 0 {
            return true
        }
        rb = unicode.ToLower(rb)
        ra = unicode.ToLower(ra)
        if ra != rb {
            return ra < rb
        }
        sa = sa[na:]
        sb = sb[nb:]
    }
}</code>
Nach dem Login kopieren

Sie können dann diese Funktion „lessLower“ verwenden, um die Zeichenfolgen ohne Berücksichtigung der Groß- und Kleinschreibung zu sortieren:

<code class="go">sort.Slice(data, func(i, j int) bool { return lessLower(data[i], data[j]) })</code>
Nach dem Login kopieren

Für sprach- oder kulturspezifische Sortierreihenfolgen sollten Sie die Verwendung des Sortierpakets in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go mit der Funktion „sort.Strings()' eine Sortierung von Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage