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

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

Golang 遞增字符串中的數(shù)字(使用符文)

Golang 遞增字符串中的數(shù)字(使用符文)

Go
繁花如伊 2023-05-15 09:55:33
我有一個(gè)混合了字符和數(shù)字的字符串,但我想增加最后一個(gè)恰好是數(shù)字的字符,這就是我所擁有的,它有效,但是一旦我達(dá)到 10 符文就變成黑色,因?yàn)槭M(jìn)制為零,是有更好的方法嗎?package mainimport (    "fmt")func main() {str := "version-1.1.0-8"rStr := []rune(str)last := rStr[len(rStr)-1]rStr[len(rStr)-1] = last + 1}所以這適用于 str := "version-1.1.0-8" = version-1.1.0-9 str := version-1.1.0-9 = version-1.1.0-我明白為什么會(huì)這樣,但我不知道如何解決
查看完整描述

1 回答

?
PIPIONE

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

您的意圖是增加最后一個(gè)符文表示的數(shù)字,因此您應(yīng)該這樣做:解析該數(shù)字,將其增加為數(shù)字,然后將其“重新編碼”為字符串。

您不能對(duì)單個(gè)符文進(jìn)行操作,因?yàn)橐坏?shù)量達(dá)到10,就只能使用 2 個(gè)符文來表示。另一個(gè)問題是,如果最后一個(gè)數(shù)字是19,增加它需要改變以前的符文(而不是添加新的符文)。

解析數(shù)字并重新編碼比人們想象的要容易得多。

您可以利用fmt包的fmt.Sscanf()功能fmt.Sprintf()。解析和重新編碼只是一個(gè)函數(shù)調(diào)用。

讓我們將此功能包裝到一個(gè)函數(shù)中:

const format = "version-%d.%d.%d-%d"


func incLast(s string) (string, error) {

? ? var a, b, c, d int

? ? if _, err := fmt.Sscanf(s, format, &a, &b, &c, &d); err != nil {

? ? ? ? return "", err

? ? }


? ? d++

? ? return fmt.Sprintf(format, a, b, c, d), nil

}

測(cè)試它:


s := "version-1.1.0-8"


for i := 0; i < 13; i++ {

? ? var err error

? ? if s, err = incLast(s); err != nil {

? ? ? ? panic(err)

? ? }

? ? fmt.Println(s)

}

輸出(在Go Playground上嘗試):

version-1.1.0-9

version-1.1.0-10

version-1.1.0-11

version-1.1.0-12

version-1.1.0-13

version-1.1.0-14

version-1.1.0-15

version-1.1.0-16

version-1.1.0-17

version-1.1.0-18

version-1.1.0-19

version-1.1.0-20

version-1.1.0-21

另一種選擇是只解析和重新編碼最后一部分,而不是完整的版本文本。這就是它的樣子:


func incLast2(s string) (string, error) {

? ? i := strings.LastIndexByte(s, '-')

? ? if i < 0 {

? ? ? ? return "", fmt.Errorf("invalid input")

? ? }


? ? d, err := strconv.Atoi(s[i+1:])

? ? if err != nil {

? ? ? ? return "", err

? ? }


? ? d++

? ? return s[:i+1] + strconv.Itoa(d), nil

}

測(cè)試和輸出是一樣的。在Go Playground試試這個(gè)。



查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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