如何将字符串的第一个字母大写

我有一个这样的字符串

var sentence string = "the biggest ocean is the Pacific ocean"

我希望能够将t输入字符串中的第一个字母大写,使字符串变为

"The biggest ocean is the Pacific ocean"

如何在 Go 中做到这一点?

我试过使用strings.Titlestrings.ToTitle但是他们没有做我想做的事。


慕妹3146593
浏览 173回答 4
4回答

鸿蒙传说

假设您的输入字符串是有效的 UTF-8,这个线程(Golang - ToUpper() on a single byte?)足够接近,虽然不是一个完美的副本。我们可以在此基础上使用字符串unicode.ToUpper的第一个符文来得出一个可接受的解决方案。    r := []rune(s)     r[0] = unicode.ToUpper(r[0])     s := string(r)或者使用“聪明”的单线:    s := string(append([]rune{unicode.ToUpper(r[0])}, r[1:]...))与字符串不同,符文切片不是不可变的,因此您可以将第一个符文替换为ToUpper,这将处理具有大写字母(例如俄语)的非 ASCII 和/或多字节代码点,而忽略那些没有的t(例如亚洲文字)注意: UPPER case 和 TITLE case 是有区别的,这里简单解释一下。简而言之,像DŽ这样的二合字母将有不同的标题大小写(Dž,只有第一个字素大写)和大写(DŽ,两个字素都大写)。如果您确实需要标题大小写,请使用unicode.ToTitle.注意 2:转换为/从stringto[]rune涉及复制,因为您从不可变字符串中获得可变切片。如果您希望在对性能敏感的代码中使用它,请对您的应用程序进行分析。游乐场:https ://go.dev/play/p/HpCBM7cRflZ如果您有一个相当大的输入字符串,其中完整的符文切片转换变得过于昂贵,您可以使用某个分隔符上的上限来解决此strings.SplitN问题,本质上是提取文本的第一个单词并仅在转换中使用它:sep := " "ss := strings.SplitN(s, sep, 2)r := []rune(ss[0])r[0] = unicode.ToUpper(r[0])s = string(r) + sep + ss[1])使用约 30K 输入字符串进行基准测试显示出显着差异:go test -v -bench=. -benchmemgoos: darwingoarch: arm64pkg: example.comBenchmarkRuneConv-10            6376        183691 ns/op      258049 B/op          3 allocs/opBenchmarkSplitN-10           1709989           706.1 ns/op      4152 B/op          3 allocs/opPASSok      example.com 3.477s

侃侃无极

获取第一个符文,符文的标题大小写并重新组装字符串:sentence := "the biggest ocean is the Pacific ocean"r, i := utf8.DecodeRuneInString(sentence)sentence = string(unicode.ToTitle(r)) + sentence[i:]fmt.Println(sentence)

富国沪深

达到预期结果的最简单方法是使用strings.ToUpper()函数。参考var input string = "the biggest ocean is the Pacific ocean"    res := strings.ToUpper(input[:1]) + input[1:]    fmt.Println(res)或者你可以去goplayground试试

偶然的你

我有简单的解决方案给你。它是我在 Github 上的某人项目的一个分支https://github.com/CleanMachine1/capitalise要使用它,只需在终端中运行:go mod init MODULENAMEgo get github.com/cleanmachine1/capitalise然后在你的代码中你可以使用package mainimport ("github.com/cleanmachine1/capitalise")func main(){ sentence = capitalise.First(sentence)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go