我正在尝试使用三种语言(C ++,Python和Golang)进行大小写折叠,因为我需要能够检查字符串是否与保存的字符串匹配,无论语言是什么。
一个有问题的例子是德语单词“grüßen”,大写字母是“GRÜSSEN”(注意''''变成两个字符'SS')。
我有什么方法可以解决这个问题吗,或者unicode's documentation结尾处的这个错误是否适用于golang中文本转换的所有用法?如果是这样的话,除了在cgo中编写之外,我有什么选择案例折叠?
答案 0 :(得分:6)
高级(启用Unicode)文本处理不是Go stdlib的一部分,¹
并以许多(“祝福”)第三方包的形式存在
在golang.org/x/text/
umbrella下。
正如Shawn自己想的那样,人们可以做到
import (
"golang.org/x/text/cases"
)
c := cases.Fold()
c.String("grüßen")
让“grüssen”回来。
¹这是因为stdlib中提供的任何东西都受制于 Go 1 compatibility promise, 并且在Go 1发货时,某些功能无法使用 或者是不完整的或它的API处于不稳定状态等,因此这些位被禁止了 让他们成熟的核心。