【问题标题】:Ignore character accents when sorting strings排序字符串时忽略字符重音
【发布时间】:2014-01-20 12:01:19
【问题描述】:

我正在编写一个 golang 程序,它接受一个字符串列表并按字符串的第一个字符将它们排序到桶列表中。但是,我希望它将重音字符与最相似的非重音字符分组。所以,如果我有一个字母 A 的存储桶,那么我希望包含以 Á 开头的字符串。

Go 是否有任何内置功能可以确定这一点,或者我最好的办法是使用包含所有字符及其重音变体的大型 switch 语句?

【问题讨论】:

  • 祝你的 switch 语句好运!每个字符都有无数的变化(超过一百个),Unicode 在不断发展!最重要的是,组合的口音提供了无限的可能性。

标签: string go unicode-string


【解决方案1】:

看起来有一些插件包。这是一个例子......

package main

import (
   "fmt"
   "golang.org/x/text/collate"
   "golang.org/x/text/language"
)

func main() {
   strs := []string{"abc", "áab", "aaa"}
   cl := collate.New(language.English, collate.Loose)
   cl.SortStrings(strs)
   fmt.Println(strs) 
}

输出:

[aaa áab abc]

另外,请查看以下有关文本规范化的参考: http://blog.golang.org/normalization

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2012-06-22
    • 2018-01-14
    • 2011-04-06
    • 2010-09-26
    • 2017-01-27
    • 2011-05-13
    相关资源
    最近更新 更多