Go 戈朗杂岩褶皱gr和xFCß;EN

Go 戈朗杂岩褶皱gr和xFCß;EN,go,unicode,case-folding,Go,Unicode,Case Folding,我试图使三种语言(C++、Python和Golang)之间的大小写折叠保持一致,因为我需要能够检查字符串是否与保存的字符串匹配,而不管是哪种语言 例如,有问题的单词是德语单词“grüßen”,大写为“grÜSSEN”(注意,“ß”变为两个字符“SS”) C++在使用boost::locale时运行良好 Python3也可以通过str.casefold()工作 然而,Golang似乎没有办法正确折叠箱子 有没有什么方法可以做到这一点,我还没有找到,或者最后的这个bug是否适用于golang中文

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

例如,有问题的单词是德语单词“grüßen”,大写为“grÜSSEN”(注意,“ß”变为两个字符“SS”)

  • C++在使用boost::locale时运行良好
  • Python3也可以通过str.casefold()工作
  • 然而,Golang似乎没有办法正确折叠箱子
有没有什么方法可以做到这一点,我还没有找到,或者最后的这个bug是否适用于golang中文本转换的所有用法?如果是这样的话,除了在cgo中编写外,我还有什么样的案例折叠选项

高级(支持Unicode)文本处理不是Go stdlib的一部分,ª 并以大量(“受祝福的”)第三方软件包的形式存在 在下面

正如肖恩自己所想,我们可以做到

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

c := cases.Fold()
c.String("grüßen")
把“格吕森”找回来


那是因为stdlib中装运的任何东西都受 , 在Go 1发布时,某些功能不可用 或者是不完整的,或者是它的API在不断变化,等等,所以这些信息被排除在外
让他们成熟。

给定golang将资本化函数实现为
func to(_caseint,r rune,caseRange[]caseRange)rune{
甚至可以返回多个规则。是的,这就是我试图得到的。有些语言中只有一个“rune”可以通过大小写折叠/大写变成两个,所以在golang中应该有一种处理这种事情的方法。如果你最终创造了一个问题,你能在这里发布一个链接吗(因为我不认为那里有什么东西可以正确转换它)有趣而且有点相关:完整大小写折叠是需要技巧的unicode代码点(在围棋中不起作用)不在核心:请看看能为您做些什么。c.String(“grüßen”)实际上返回grüssen,而不是grÜssen。