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

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

如何將跟隨者字符連接到字符串,直到在 Golang 中達到定義的最大長度?

如何將跟隨者字符連接到字符串,直到在 Golang 中達到定義的最大長度?

Go
達令說 2021-12-07 16:07:23
InputOutputabc    abc___a        a___    abcdeabcde_試圖package mainimport "fmt"import "unicode/utf8"func main() {    input := "abc"    if utf8.RuneCountInString(input) == 1 {        fmt.Println(input + "_____")    } else if utf8.RuneCountInString(input) == 2 {        fmt.Println(input + "____")    } else if utf8.RuneCountInString(input) == 3 {        fmt.Println(input + "___")    } else if utf8.RuneCountInString(input) == 4 {        fmt.Println(input + "__")    } else if utf8.RuneCountInString(input) == 5 {        fmt.Println(input + "_")    } else {        fmt.Println(input)    }}回報abc___討論盡管代碼正在創建預期的輸出,但它看起來非常冗長和狡猾。題有沒有簡潔的方法?
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

字符串封裝具有Repeat的功能,所以像

input += strings.Repeat("_", desiredLen - utf8.RuneCountInString(input))

會更簡單。您應該首先檢查它desiredLen是否小于輸入長度。


查看完整回答
反對 回復 2021-12-07
?
蠱毒傳說

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

您還可以通過切片準備好的“最大填充”(切出所需的填充并將其添加到輸入中)來有效地執行此操作,而無需循環和“外部”函數調用:


const max = "______"


func pad(s string) string {

    if i := utf8.RuneCountInString(s); i < len(max) {

        s += max[i:]

    }

    return s

}

使用它:


fmt.Println(pad("abc"))

fmt.Println(pad("a"))

fmt.Println(pad("abcde"))

輸出(在Go Playground上試試):


abc___

a_____

abcde_

筆記:


len(max)是常數(因為max是常數):規格:長度和容量:


表達len(s)是常數,如果s是字符串常量。


切片 astring是有效的:


這種類似切片的字符串設計的一個重要結果是創建子字符串非常有效。所需要做的就是創建一個兩個字的字符串標題。由于字符串是只讀的,原始字符串和切片操作產生的字符串可以安全地共享同一個數組。


查看完整回答
反對 回復 2021-12-07
?
神不在的星期二

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

你可以input += "_"在一個循環中完成,但這會分配不必要的字符串。這是一個不會分配超過其需要的版本:


const limit = 6


func f(s string) string {

    if len(s) >= limit {

        return s

    }

    b := make([]byte, limit)

    copy(b, s)

    for i := len(s); i < limit; i++ {

        b[i] = '_'

    }

    return string(b)

}

游樂場:http : //play.golang.org/p/B_Wx1449QM。


查看完整回答
反對 回復 2021-12-07
  • 3 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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