16

我试图让大小写折叠在三种语言(C++、Python 和 Golang)之间保持一致,因为无论使用哪种语言,我都需要能够检查字符串是否与保存的字符串匹配。

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

有没有我遗漏的方法可以做到这一点,或者unicode 文档末尾的这个错误是否适用于 golang 中文本转换的所有用法?如果是这样,除了在 cgo 中编写之外,我还有哪些案例折叠选项?

4

1 回答 1

9

高级(支持 Unicode)文本处理不是 Go 标准库的一部分,¹并且以一系列(“祝福”)第三方包的形式golang.org/x/text/存在

正如肖恩自己发现的那样,一个人可以做到

import (
  "golang.org/x/text/cases"
)

c := cases.Fold()
c.String("grüßen")

让“grüssen”回来。


¹ 那是因为在 stdlib 中发布的任何内容都受 Go 1 兼容性承诺的约束,并且在发布 Go 1 时某些功能不可用或不完整或其 API 不断变化等,因此这些位被排除在外核心让他们成熟。

于 2017-03-28T07:28:54.840 回答