【发布时间】:2017-03-28 02:59:29
【问题描述】:
我试图让大小写折叠在三种语言(C++、Python 和 Golang)之间保持一致,因为我需要能够检查字符串是否与保存的字符串匹配,无论是哪种语言。
一个有问题的单词示例是德语单词“grüßen”,它的大写字母是“GRÜSSEN”(注意“ß”变成了两个字符为“SS”)。
- C++ 使用 boost::locale text conversion docs 效果很好
- Python 3 也可以通过 str.casefold() casefold docs 工作
- 但是,Golang 似乎没有办法进行正确的大小写折叠。 golang playground example
是否有一些我遗漏的方法可以做到这一点,或者unicode's documentation 末尾的这个错误是否适用于 golang 中文本转换的所有用法?如果是这样,除了在 cgo 中编写之外,我还有哪些案例折叠选项?
【问题讨论】:
-
鉴于 golang 实现了
func to(_case int, r rune, caseRange []CaseRange) rune {的大写功能,是否甚至可以返回多个规则。 -
是的,这就是我想要达到的目的。在某些语言中,一个“符文”可以通过大小写折叠/大写变成两个,所以应该有一种方法可以在 golang 中处理这样的事情。
-
如果您最终创建了一个问题,请在此处发布一个链接(因为我认为那里没有可以正确转换它的东西)
-
有趣,而且有点相关:unicode.org/Public/UCD/latest/ucd/CaseFolding.txt 全大小写折叠是棘手的 unicode 代码点(在 Go 中不起作用)
-
不在核心:请看看golang.org/x/text能为你做什么。
标签: go unicode case-folding