首頁  >  文章  >  後端開發  >  Go中如何實作字串清單的不區分大小寫排序?

Go中如何實作字串清單的不區分大小寫排序?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 06:57:29946瀏覽

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

Go 中使用sort.Strings() 不區分大小寫的排序

對於Go 中字串清單的不區分大小寫字串清單的不區分大小寫字串清單排序,請考慮使用sort。 Slice(),比 sort.Strings() 提供了更大的彈性。

用於不區分大小寫比較的自訂函數

您可以將自訂函數傳遞給 sort.Slice () 執行不區分大小寫的比較。以下函數在比較字串之前將字串轉換為小寫:

<code class="go">func lowercaseCompare(s1, s2 string) bool {
    return strings.ToLower(s1) < strings.ToLower(s2)
}</code>

應用自訂函數

要使用自訂函數對列表資料不區分大小寫的排序:

<code class="go">sort.Slice(data, lowercaseCompare)</code>

範例

考慮字串清單資料:= []string{"A", "b", "D", "c"}。使用自訂函數對其進行不區分大小寫的排序會產生結果 ["A", "b", "c", "D"]。

高效的不區分大小寫排序

上述方法為每次比較分配兩個新字串。對於大型字串列表,這可能效率低下。為了提高效能,請考慮逐個符文比較:

<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>

使用runeCompare() 進行高效排序

要有效率地對資料進行排序:

<code class="go">sort.Slice(data, runeCompare)</code>

替代解決方案:collat​​ 套件

對於特定語言或文化的排序,請考慮使用collat​​e 套件。它提供區域設定感知排序功能。

以上是Go中如何實作字串清單的不區分大小寫排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn