首頁 > 後端開發 > Golang > 主體

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

Mary-Kate Olsen
發布: 2024-10-28 06:57:29
原創
948 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!