正如这里建议的,人名应该大写,比如John William Smith
。
我正在用 Golang 编写一个小软件,它从用户的表单输入中获取姓氏和名字。
在 Go 1.18 之前我一直在使用:
lastname = strings.Title(strings.ToLower(strings.TrimSpace(lastname)))
firstname = strings.Title(strings.ToLower(strings.TrimSpace(firstname)))
Run Code Online (Sandbox Code Playgroud)
它可以工作,但现在 Go 1.18已弃用strings.Title()
。
他们建议改用golang.org/x/text/cases
。
所以我想我应该改变我的代码,如下所示:
caser := cases.Title(language.Und)
lastname = caser.Title(strings.ToLower(strings.TrimSpace(lastname)))
firstname = caser.Title(strings.ToLower(strings.TrimSpace(firstname)))
Run Code Online (Sandbox Code Playgroud)
它的工作原理与以前相同。
区别在于荷兰语单词的标题ijsland
应该是 asIJsland
和 not Ijsland
。
caser := cases.Title(language.Und)
在我使用的行中Und
,因为我不知道要使用什么语言标签。
我应该使用language.English
或language.AmericanEnglish
或其他?
到目前为止,就像是strings.Title()
在使用Und
或English
?
Edu*_*eco 20
正如文档中提到的strings.Title已被弃用,您应该使用它cases.Title
。
\n\n已弃用:标题用于字边界的规则无法正确处理\nUnicode 标点符号。请改用 golang.org/x/text/cases。
\n
以下是如何从两个角度使用它的示例代码:
\n// Straightforward approach\ncaser := cases.Title(language.BrazilianPortuguese)\ntitleStr := caser.String(str)\n\n// Transformer interface aware approach\nsrc := []byte(s)\ndest := []byte(s) // dest can also be `dest := src`\ncaser := cases.Title(language.BrazilianPortuguese)\n_, _, err := caser.Transform(dest, src, true)\n
Run Code Online (Sandbox Code Playgroud)\n请务必查看transform.Transformer.Transform和cases.Caser,以了解每个参数和返回值的含义以及该工具的限制。例如:
\n\n\nCaser 可能是有状态的,因此不应在\ngoroutine 之间共享。
\n
至于language
使用什么,你应该意识到它们在结果上的差异,除此之外,你应该可以选择任何一种。这是\xe7\x85\x8e\xe9\xb1\xbc\对我清除差异的摘要的副本:
去游乐场:https://go.dev/play/p/xp59r1BkC9L
\nfunc main() {\n src := []string{\n "hello world!",\n "i with dot",\n "\'n ijsberg",\n "here comes O\'Brian",\n }\n for _, c := range []cases.Caser{\n cases.Lower(language.Und),\n cases.Upper(language.Turkish),\n cases.Title(language.Dutch),\n cases.Title(language.Und, cases.NoLower),\n } {\n fmt.Println()\n for _, s := range src {\n fmt.Println(c.String(s))\n }\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n具有以下输出
\nhello world!\ni with dot\n\'n ijsberg\nhere comes o\'brian\n\nHELLO WORLD!\n\xc4\xb0 W\xc4\xb0TH DOT\n\'N \xc4\xb0JSBERG\nHERE COMES O\'BR\xc4\xb0AN\n\nHello World!\nI With Dot\n\'n IJsberg\nHere Comes O\'brian\n\nHello World!\nI With Dot\n\'N Ijsberg\nHere Comes O\'Brian\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
21859 次 |
最近记录: |