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

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

在 Go 中迭代多行字符串

在 Go 中迭代多行字符串

Go
慕森王 2021-11-15 16:50:08
在 Python 中,我可以遍歷多行字符串。x = """\this ismy multilinestring!"""for line in x.splitlines():    print(line)Go 也可以這樣做嗎?
查看完整描述

3 回答

?
aluckdog

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

您可以bufio.Scanner在 Go 中使用它從io.Reader. 以下示例從給定的多行字符串創建讀取器并將其傳遞給掃描儀工廠函數。每次調用都會scanner.Scan()在下一行拆分讀取器并緩沖該行。如果沒有更多行,則返回 false。調用scanner.Text()返回緩沖的拆分。


var x string = `this is

my multiline

string`


scanner := bufio.NewScanner(strings.NewReader(x))

for scanner.Scan() {

    fmt.Println(scanner.Text())

}

在該示例中,for 循環將繼續,直到Scan()在多行字符串的末尾返回 false。在每個循環中,我們打印掃描返回的行。


https://play.golang.org/p/U9_B4TsH6M


查看完整回答
反對 回復 2021-11-15
?
慕絲7291255

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

如果要迭代問題中所示的多行字符串文字,請使用以下代碼:


for _, line := range strings.Split(strings.TrimSuffix(x, "\n"), "\n") {

    fmt.Println(line)

}

Run the code on the playground


如果要迭代從文件讀取的數據,請使用bufio.Scanner。該文檔有一個示例,展示了如何遍歷行:


scanner := bufio.NewScanner(f) // f is the *os.File

for scanner.Scan() {

    fmt.Println(scanner.Text()) // Println will add back the final '\n'

}

if err := scanner.Err(); err != nil {

   // handle error

}


查看完整回答
反對 回復 2021-11-15
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

我認為 usingbufio是最好的選擇,但如果您確實需要拆分一個字符串,我認為TrimRight它比 更好TrimSuffix,因為它可以涵蓋重復尾隨換行符或回車符的任何組合:


package main

import "strings"


func main() {

   x := `this is

my multiline

string!

`

   for _, line := range strings.Split(strings.TrimRight(x, "\n"), "\n") {

      println(line)

   }

}

https://golang.org/pkg/strings#TrimRight


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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