我正在逐行读取文件,并且喜欢根据子字符串拆分行。但是当我使用 SplitAfterN 并传递读取行时,我面临以下错误,
无法将“变量”(类型[]字符串)转换为字符串类型
其中 '变量' = []字符串类型
package main
import (
"bufio"
"flag"
"fmt"
"log"
"os"
"strings"
)
func main() {
var fLine []string
FileName := flag.String("fpath", "Default file path", "File path description ")
flag.Parse()
fptr, err := os.Open(*FileName)
if err != nil {
log.Fatal(err)
}
FileScanner := bufio.NewScanner(fptr)
for FileScanner.Scan() {
// Append each line into one buffer while reading
fLine = append(fLine, FileScanner.Text())
splitline := strings.SplitAfterN(fLine, "12345", 2)
fmt.Println("Splited string = ", splitline[1])
}
}
我期待下面的行来拆分传递的参数 (fLine) 分割线 := strings.SplitAfterN(fread, "12345", 2)
最佳答案
您读取的(最后)行不是 fLine
,它是所有行的一部分。最后一行由 FileScanner.Text()
返回。如果要拆分最后一行,请将其存储在变量中,或使用 slice 的最后一个元素。
如果您选择将其存储在变量中:
line := FileScanner.Text()
fLine = append(fLine, line)
splitline := strings.SplitAfterN(line, "12345", 2)
如果你只想使用最后一个 slice 元素:
fLine = append(fLine, FileScanner.Text())
splitline := strings.SplitAfterN(fLine[len(fLine)-1], "12345", 2)
关于string - 如何将[]string或[]byte类型传递给golang中的SplitAfterN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57107822/