string - 如何将[]string或[]byte类型传递给golang中的SplitAfterN?

标签 string file go

我正在逐行读取文件,并且喜欢根据子字符串拆分行。但是当我使用 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/

相关文章:

Android ACTION_SEND 附件

javascript - 相当于_.isObject(value)-函数在lodash中

python - 如何提取MAC ID?

c++ - 如何从文件中读取整行(带空格)?

c - 如何从命令行读取文件

go - 并行获取多个字段的模式

go - 为什么golang rand.Shuffle每次新运行总是返回相同的值?

c - C 中的反转字符串函数

c# - 对于给定的单词,计算可能的字谜词的数量

c - 两个 scanf 函数,但其​​中一个读取不同的值