迎接 Golang 复杂的折叠
Golang complex fold grüßen
我试图让大小写折叠在三种语言(C++、Python 和 Golang)之间保持一致,因为我需要能够检查字符串是否与保存的字符串匹配,而不管是哪种语言。
一个有问题的单词示例是德语单词 "grüßen",大写为 "GRÜSSEN"(请注意,'ß' 变成两个字符,如 'SS')。
- C++ 使用 boost::locale text conversion docs
效果很好
- Python 3 也适用于 str.casefold() casefold docs
- 但是,Golang 似乎没有办法进行正确的大小写折叠。 戈朗
游乐场示例
有没有我遗漏的方法,或者 unicode's documentation 末尾的这个错误是否适用于 golang 中文本转换的所有用法?如果是这样,除了在 cgo 中编写外,我还有哪些案例折叠选项?
高级(支持 Unicode 的)文本处理不是 Go 标准库的一部分,¹
并以大量 ("blessed") 第三方包的形式存在
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 在不断变化等,所以这些位被排除在外
让他们成熟的核心。
我试图让大小写折叠在三种语言(C++、Python 和 Golang)之间保持一致,因为我需要能够检查字符串是否与保存的字符串匹配,而不管是哪种语言。
一个有问题的单词示例是德语单词 "grüßen",大写为 "GRÜSSEN"(请注意,'ß' 变成两个字符,如 'SS')。
- C++ 使用 boost::locale text conversion docs 效果很好
- Python 3 也适用于 str.casefold() casefold docs
- 但是,Golang 似乎没有办法进行正确的大小写折叠。 戈朗 游乐场示例
有没有我遗漏的方法,或者 unicode's documentation 末尾的这个错误是否适用于 golang 中文本转换的所有用法?如果是这样,除了在 cgo 中编写外,我还有哪些案例折叠选项?
高级(支持 Unicode 的)文本处理不是 Go 标准库的一部分,¹
并以大量 ("blessed") 第三方包的形式存在
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 在不断变化等,所以这些位被排除在外 让他们成熟的核心。