第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將字符串的第一個(gè)字母大寫

如何將字符串的第一個(gè)字母大寫

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

4 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

假設(shè)您的輸入字符串是有效的 UTF-8,這個(gè)線程(Golang - ToUpper() on a single byte?)足夠接近,雖然不是一個(gè)完美的副本。我們可以在此基礎(chǔ)上使用字符串unicode.ToUpper的第一個(gè)符文來得出一個(gè)可接受的解決方案。

    r := []rune(s)
    r[0] = unicode.ToUpper(r[0])
    s := string(r)

或者使用“聰明”的單線:

    s := string(append([]rune{unicode.ToUpper(r[0])}, r[1:]...))

與字符串不同,符文切片不是不可變的,因此您可以將第一個(gè)符文替換為ToUpper,這將處理具有大寫字母(例如俄語)的非 ASCII 和/或多字節(jié)代碼點(diǎn),而忽略那些沒有的t(例如亞洲文字)

注意: UPPER case 和 TITLE case 是有區(qū)別的,這里簡單解釋一下。簡而言之,像?這樣的二合字母將有不同的標(biāo)題大小寫(?,只有第一個(gè)字素大寫)和大寫(?,兩個(gè)字素都大寫)。如果您確實(shí)需要標(biāo)題大小寫,請(qǐng)使用unicode.ToTitle.

注意 2:轉(zhuǎn)換為/從stringto[]rune涉及復(fù)制,因?yàn)槟鷱牟豢勺冏址蝎@得可變切片。如果您希望在對(duì)性能敏感的代碼中使用它,請(qǐng)對(duì)您的應(yīng)用程序進(jìn)行分析。

游樂場(chǎng):https ://go.dev/play/p/HpCBM7cRflZ


如果您有一個(gè)相當(dāng)大的輸入字符串,其中完整的符文切片轉(zhuǎn)換變得過于昂貴,您可以使用某個(gè)分隔符上的上限來解決此strings.SplitN問題,本質(zhì)上是提取文本的第一個(gè)單詞并僅在轉(zhuǎn)換中使用它:

sep := " "

ss := strings.SplitN(s, sep, 2)


r := []rune(ss[0])

r[0] = unicode.ToUpper(r[0])


s = string(r) + sep + ss[1])

使用約 30K 輸入字符串進(jìn)行基準(zhǔn)測(cè)試顯示出顯著差異:


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


查看完整回答
反對(duì) 回復(fù) 2022-10-17
?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

獲取第一個(gè)符文,符文的標(biāo)題大小寫并重新組裝字符串:


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

r, i := utf8.DecodeRuneInString(sentence)

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

fmt.Println(sentence)


查看完整回答
反對(duì) 回復(fù) 2022-10-17
?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

達(dá)到預(yù)期結(jié)果的最簡單方法是使用strings.ToUpper()函數(shù)。參考

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

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


    fmt.Println(res)

或者

你可以去goplayground試試


查看完整回答
反對(duì) 回復(fù) 2022-10-17
?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊

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


它是我在 Github 上的某人項(xiàng)目的一個(gè)分支


https://github.com/CleanMachine1/capitalise

要使用它,只需在終端中運(yùn)行:


go mod init MODULENAME

go get github.com/cleanmachine1/capitalise

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



package main


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


func main(){

 sentence = capitalise.First(sentence)

}


查看完整回答
反對(duì) 回復(fù) 2022-10-17
  • 4 回答
  • 0 關(guān)注
  • 170 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)