亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將字符串的第一個字母大寫

如何將字符串的第一個字母大寫

Go
慕妹3146593 2022-10-17 16:15:14
我有一個這樣的字符串var sentence string = "the biggest ocean is the Pacific ocean"我希望能夠將t輸入字符串中的第一個字母大寫,使字符串變為"The biggest ocean is the Pacific ocean"如何在 Go 中做到這一點?我試過使用strings.Title,strings.ToTitle但是他們沒有做我想做的事。
查看完整描述

4 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

假設您的輸入字符串是有效的 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 是有區別的,這里簡單解釋一下。簡而言之,像?這樣的二合字母將有不同的標題大小寫(?,只有第一個字素大寫)和大寫(?,兩個字素都大寫)。如果您確實需要標題大小寫,請使用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=. -benchmem

goos: darwin

goarch: arm64

pkg: example.com

BenchmarkRuneConv-10            6376        183691 ns/op      258049 B/op          3 allocs/op

BenchmarkSplitN-10           1709989           706.1 ns/op      4152 B/op          3 allocs/op

PASS

ok      example.com 3.477s


查看完整回答
反對 回復 2022-10-17
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

獲取第一個符文,符文的標題大小寫并重新組裝字符串:


sentence := "the biggest ocean is the Pacific ocean"

r, i := utf8.DecodeRuneInString(sentence)

sentence = string(unicode.ToTitle(r)) + sentence[i:]

fmt.Println(sentence)


查看完整回答
反對 回復 2022-10-17
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

達到預期結果的最簡單方法是使用strings.ToUpper()函數。參考

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

    res := strings.ToUpper(input[:1]) + input[1:]


    fmt.Println(res)

或者

你可以去goplayground試試


查看完整回答
反對 回復 2022-10-17
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

我有簡單的解決方案給你。


它是我在 Github 上的某人項目的一個分支


https://github.com/CleanMachine1/capitalise

要使用它,只需在終端中運行:


go mod init MODULENAME

go get github.com/cleanmachine1/capitalise

然后在你的代碼中你可以使用



package main


import ("github.com/cleanmachine1/capitalise")


func main(){

 sentence = capitalise.First(sentence)

}


查看完整回答
反對 回復 2022-10-17
  • 4 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號