Golang复合折叠grüßen

时间:2017-03-28 02:59:29

标签: go unicode case-folding

我正在尝试使用三种语言(C ++,Python和Golang)进行大小写折叠,因为我需要能够检查字符串是否与保存的字符串匹配,无论语言是什么。

一个有问题的例子是德语单词“grüßen”,大写字母是“GRÜSSEN”(注意''''变成两个字符'SS')。

我有什么方法可以解决这个问题吗,或者unicode's documentation结尾处的这个错误是否适用于golang中文本转换的所有用法?如果是这样的话,除了在cgo中编写之外,我有什么选择案例折叠?

1 个答案:

答案 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处于不稳定状态等,因此这些位被禁止了 让他们成熟的核心。