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

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

我想為一些索引字符串循環生成返回字符串函數

我想為一些索引字符串循環生成返回字符串函數

Go
喵喔喔 2023-03-15 13:46:41
func change(a string) string {    // fmt.Println(a)    v := ""    if string(a) == "a" {        return "A"        v += a    }    return ""}func main() {    fmt.Println(change("a"))    fmt.Println(change("ab"))}我剛開始編程,實際上,輸出現在是 A,但是為什么當我將變量值更改為“ab”時,它沒有返回任何值,輸出必須是“Ab”
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

因此,您基本上希望a輸入中的所有 s 都更改為A. 目前,您只需檢查整個字符串是否等于"a",并且"ab"不等于"a"。return ""因此,程序以第二種情況結束。


通常,您可以使用類似strings.ReplaceAll("abaaba","a","A"). 但出于教育目的,這里有一個“手動”解決方案。


func change(a string) string {

    v := "" // our new string, we construct it step by step

    for _, c := range a { // loop over all characters

        if c != 'a' { // in case it's not an "a" ...

            v += string(c) // ... just append it to the new string v

        } else {

            v += "A" // otherwise append an "A" to the new string v

        }

    }

    return v

}

另請注意cis 類型rune,因此必須轉換為stringwith string(c)。


編輯:如評論中所述,實際上這不是構建新string. rune除了從到轉換的麻煩之外string,string每次我們添加一些東西并刪除舊的東西時,我們都會創建一個新的。相反,我們只想創建string一次 - 在最后,當我們確切知道結果的樣子時string。因此,我們應該改用字符串生成器。為了避免混淆,這里有一個單獨的例子:


func change(a string) string {

    var resultBuilder strings.Builder

    for _, c := range a { // loop over all characters

        if c != 'a' { // in case it's not an "a" ...

            resultBuilder.WriteRune(c) // ... just append it to the new string v

        } else {

            resultBuilder.WriteString("A") // otherwise append an "A" to the new string v

        }

    }

    return resultBuilder.String() // Create the final string once everything is set

}


查看完整回答
反對 回復 2023-03-15
  • 1 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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