3 回答

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

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
}

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
- 3 回答
- 0 關注
- 367 瀏覽
添加回答
舉報